美文网首页
React 全屏监听Esc键来达到按下修改数据

React 全屏监听Esc键来达到按下修改数据

作者: Poiey | 来源:发表于2020-03-21 10:03 被阅读0次

前言:前端展示越来越重要,随着可视化图表的功能越来越强大。UI展示这块也流行。最近一个需求,全屏与退出全屏。这里附上代码。

全屏与退出全屏

// fullscreen.js
const doc = document;
const html = doc.documentElement;

const enter =
  html.requestFullscreen ||
  html.webkitRequestFullScreen ||
  html.mozRequestFullScreen ||
  html.msRequestFullscreen;

const exit =
  doc.exitFullscreen ||
  doc.webkitCancelFullScreen ||
  doc.mozCancelFullScreen ||
  doc.msExitFullscreen;

const enterFullScreen = () => {
  enter && enter.call(html);
};

const exitFullScreen = () => {
  exit && exit.call(doc);
};

export { enterFullScreen, exitFullScreen };

使用时只需要导入即可
(由于我做的是一个后台管理项目,这里全屏会区别于别的一些项目。这里想说的其实是全屏监听Esc键来达到修改数据的目的)
使用时遇到一个问题 :全屏状态下按下Esc键,需要修改页面数据。不然状态不改变会出问题。

监听Esc键

// 这是一个demo
componentDidMount() {
  this.bindFullscreenListener ();
}

componentWillUnmount() {
  try {
    this.unBindFullscreenListener();
  } catch (e) {
    console.warn(e);
  }
}

bindFullscreenListener = () => {
  // 监听退出全屏事件 --- chrome 用 esc 退出全屏并不会触发 keyup 事件
  document.addEventListener("webkitfullscreenchange", this.checkFull);
  document.addEventListener("mozfullscreenchange", this.checkFull);
  document.addEventListener("fullscreenchange", this.checkFull);
  document.addEventListener("MSFullscreenChange", this.checkFull);
};

unBindFullscreenListener = () => {
  document.removeEventListener("webkitfullscreenchange", this.checkFull);
  document.removeEventListener("mozfullscreenchange", this.checkFull);
  document.removeEventListener("fullscreenchange", this.checkFull);
  document.removeEventListener("MSFullscreenChange", this.checkFull);
};

checkFull = () => {
  if (!document.webkitIsFullScreen && !document.mozFullScreen && !document.msFullscreenElement) {
    this.setState({
      fullScreen: false,
      fullScreenBtn: "全屏",
      showBtn: true
    });
  } else {
    this.setState({
      fullScreen: true,
      fullScreenBtn: "退出全屏",
      showBtn: true
    });
  }
};

使用这个之后就可以达到按下Esc键去修改页面的一些状态的目的。

相关文章

  • React 全屏监听Esc键来达到按下修改数据

    前言:前端展示越来越重要,随着可视化图表的功能越来越强大。UI展示这块也流行。最近一个需求,全屏与退出全屏。这里附...

  • js全屏/退出全屏

    点击全屏/退出全屏 登录页面常常会有监听enter键执行登录 页面全屏会监听ESC键退出全屏 备注:vue 项目中...

  • Vue全屏插件

    需求 点击某按钮实现页面全屏 按下 Esc 键退出全屏 IE9以下无需兼容 安装 npm install --sa...

  • 浏览器全屏

    先说一下,所谓全屏指的是用户手动触发点击事件使浏览器进入全屏或退出全屏,也可以按esc退出全屏,而按F11虽然也是...

  • 解决VUE在浏览器全屏下监听不到Esc键盘事件

    说明: 实测可以在谷歌、火狐、360 浏览器使用解决了在浏览器全屏下监听不到键盘Esc事件解决了取消全屏和全屏的同...

  • Vue中使用viewer.js图片查看器

    插件安装 插件引入 html部分 调用插件 键盘事件 仅在modal mode下可用ESC 键: 退出全屏/关闭/...

  • win10环境git bash使用

    添加.gitignore vi .gitignore然后按下键盘的“i”键,输入按下“esc”键,再输入“:wq”...

  • centOS忘记密码时修改密码

    1、启动倒计时的时候,快速按下esc键; 2、选择系统,按下E键 3、选择第二项,按下E键 4、输入1,回车 5、...

  • js指定元素全屏并监听退出全屏

    1.全屏实现 2.监听esc取消全屏 从网上也看到了能够实现退出全屏的方法,但是我chrome和firefox上尝...

  • vi编辑

    按ESC键 跳到命令模式

网友评论

      本文标题:React 全屏监听Esc键来达到按下修改数据

      本文链接:https://www.haomeiwen.com/subject/nrtyyhtx.html