js监听F11触发全屏事件简单代码举例

 更新时间:2024年05月10日 09:58:25   作者:lyj168997  
这篇文章主要给大家介绍了关于js监听F11触发全屏事件的相关资料,自己工作中遇到的一点点小问题,记录一下,希望也能对你们有帮助,需要的朋友可以参考下

当用户使用 F11 键进行浏览器全屏时,由于此时并非通过浏览器提供的 Fullscreen API 进入全屏模式,因此无法通过 fullscreenchange 事件来监听全屏状态的变化。在这种情况下,可以通过监听 resize 事件来检测浏览器窗口大小的变化,从而判断是否处于全屏模式。

下面是一个示例代码,演示如何通过监听 resize 事件来检测 F11 全屏操作:

let isFullScreen = false;

function checkFullScreen() {
  const fullscreenElement = document.fullscreenElement || document.webkitFullscreenElement || document.mozFullScreenElement || document.msFullscreenElement || ( window.innerHeight === screen.height);
  if (fullscreenElement) {
    isFullScreen = true;
    console.log("进入全屏模式");
  } else {
    isFullScreen = false;
    console.log("退出全屏模式");
  }
}

// 监听 resize 事件来检测全屏状态的变化
window.addEventListener("resize", checkFullScreen);

// 页面加载完毕,初始化全屏状态
window.addEventListener("load", checkFullScreen);

在上面的代码中,我们定义了一个 checkFullScreen 函数来检测全屏状态,并在页面加载完成时和窗口大小变化时调用该函数。通过不断检测当前是否存在全屏元素,我们可以实现对 F11 全屏操作的监听和处理。

在 Vue 中,可以在组件的生命周期钩子函数中添加监听和移除事件监听。例如,可以在 mounted 钩子函数中添加监听事件,在 beforeDestroy 钩子函数中移除监听事件。这样可以确保在组件销毁时正确地清除事件监听,避免内存泄漏和性能问题。

下面是一个示例代码,演示如何在 Vue 中监听窗口大小变化事件并在组件销毁时移除监听:

export default {
  mounted() {
    // 添加窗口大小变化事件监听
    window.addEventListener("resize", this.checkFullScreen);
    window.addEventListener("load", this.checkFullScreen); // 也可以在这里初始化全屏状态
  },
  beforeDestroy() {
    // 移除窗口大小变化事件监听
    window.removeEventListener("resize", this.checkFullScreen);
    window.removeEventListener("load", this.checkFullScreen);
  },
  methods: {
    checkFullScreen() {
      const isBrowserFullScreen = window.innerHeight === screen.height;
      
      if (isBrowserFullScreen) {
        console.log("进入全屏模式");
      } else {
        console.log("退出全屏模式");
      }
    }
  }
};

在上面的代码中,我们在 Vue 组件中使用 mounted 钩子函数添加窗口大小变化事件监听,在 beforeDestroy 钩子函数中移除监听。同时,我们还提供了一个 checkFullScreen 方法用来检测全屏状态。

附:禁用F11,可以试试,可能无效。

据说死浏览器的行为,我们无法控制,但是有个思路,可以根据上面的监听事件来判断,若全屏呢,可以禁用某些行为。

window.onkeydown = function (event) {
    if (event.keyCode === 122) {
      event.preventDefault()
      event.returnValue = false
    }
  }

总结

到此这篇关于js监听F11触发全屏事件的文章就介绍到这了,更多相关js监听F11触发全屏事件内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Cropper.js进阶实现图片旋转裁剪处理功能示例

    Cropper.js进阶实现图片旋转裁剪处理功能示例

    这篇文章主要为大家介绍了Cropper.js进阶实现图片旋转裁剪功能示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-05-05
  • 前端Word导出自定义页眉表格实现方案的完整流程

    前端Word导出自定义页眉表格实现方案的完整流程

    在开发过程中,我们经常会遇到文件下载(图片等)和文件导出(excel等)功能,这篇文章主要介绍了前端Word导出自定义页眉表格实现方案的完整流程,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2025-12-12
  • Flutter实现仿微信底部菜单栏功能

    Flutter实现仿微信底部菜单栏功能

    这篇文章主要介绍了Flutter实现仿微信底部菜单栏,需要的朋友可以参考下
    2019-09-09
  • JS forEach跳出循环2种实现方法

    JS forEach跳出循环2种实现方法

    这篇文章主要介绍了JS forEach跳出循环2种实现方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-06-06
  • js实现base64、url和blob之间相互转换的三种方式

    js实现base64、url和blob之间相互转换的三种方式

    Blob对象表示一个不可变、原始数据的类文件对象,Blob表示的不一定是JavaScript原生格式的数据,下面这篇文章主要给大家介绍了关于js实现base64、url和blob之间相互转换的三种方式,需要的朋友可以参考下
    2023-04-04
  • layui前端时间戳转化实例

    layui前端时间戳转化实例

    今天小编就为大家分享一篇layui前端时间戳转化实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-11-11
  • 只有 20 行的 JavaScript 模板引擎实例详解

    只有 20 行的 JavaScript 模板引擎实例详解

    这篇文章主要介绍了只有 20 行的 JavaScript 模板引擎,结合实例形式分析了JavaScript 模板引擎实现方法与相关注意事项,需要的朋友可以参考下
    2020-05-05
  • 微信小程序单选框自定义赋值

    微信小程序单选框自定义赋值

    这篇文章主要介绍了微信小程序单选框如何自定义赋值,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-05-05
  • 利用jsPDF实现将图片转为pdf

    利用jsPDF实现将图片转为pdf

    这篇文章主要为大家详细介绍了如何利用jsPDF实现将图片转为pdf的功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起了解一下
    2023-08-08
  • JS 循环li添加点击事件 (闭包的应用)

    JS 循环li添加点击事件 (闭包的应用)

    这篇文章主要介绍了js循环li添加点击事件 (闭包的应用)的相关资料,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2016-12-12

最新评论