JavaScript控制各种浏览器全屏模式的方法、属性和事件介绍


Posted in Javascript onApril 03, 2014

// 判断各种浏览器,找到正确的方法
function launchFullscreen(element) {
  if(element.requestFullscreen) {
    element.requestFullscreen();
  } else if(element.mozRequestFullScreen) {
    element.mozRequestFullScreen();
  } else if(element.webkitRequestFullscreen) {
    element.webkitRequestFullscreen();
  } else if(element.msRequestFullscreen) {
    element.msRequestFullscreen();
  }
}
// 启动全屏!
launchFullScreen(document.documentElement); // 整个网页
launchFullScreen(document.getElementById("videoElement")); // 某个页面元素

对你想要全屏显示的页面元素调用全屏方法,浏览器窗口就会变成全屏,但会先请求用户允许全屏模式。要注意,用户很有可能会拒绝全屏模式。如果用户运行全屏模式,则浏览器的工具条等按钮菜单都会隐藏,你的页面会覆盖整个屏幕。

退出全屏模式

这个exitFullscreen方法(也需要加浏览器前缀)会让浏览器退出全屏模式,变成正常模式。

// 判断浏览器种类
function exitFullscreen() {
  if(document.exitFullscreen) {
    document.exitFullscreen();
  } else if(document.mozCancelFullScreen) {
    document.mozCancelFullScreen();
  } else if(document.webkitExitFullscreen) {
    document.webkitExitFullscreen();
  }
}
// 退出全屏模式!
exitFullscreen();

需要注意的是,exitFullscreen只能由document对象调用,而不是启动全屏时传入的对象。

全屏属性和事件

不幸的是,全屏属性和事件的相关方法也需要添加浏览器前缀,但我相信很快就不需要这样做了。

1.document.fullScreenElement: 全屏显示的网页元素。
2.document.fullScreenEnabled: 判断当前是否处于全屏状态。

fullscreenchange事件会在启动全屏或退出全屏时触发:

var fullscreenElement = document.fullscreenElement || document.mozFullScreenElement || document.webkitFullscreenElement;
var fullscreenEnabled = document.fullscreenEnabled || document.mozFullScreenEnabled || document.webkitFullscreenEnabled;

你仍然可以使用上面判断浏览器种类的方法给这个事件加上前缀。

全屏样式CSS

各种浏览器都提供了一个非常有用的全屏模式时的css样式规则:

:-webkit-full-screen {
  /* properties */
}
:-moz-full-screen {
  /* properties */
}
:-ms-fullscreen {
  /* properties */
}
:full-screen { /*pre-spec */
  /* properties */
}
:fullscreen { /* spec */
  /* properties */
}
/* deeper elements */
:-webkit-full-screen video {
  width: 100%;
  height: 100%;
}
/* styling the backdrop*/
::backdrop {
  /* properties */
}
::-ms-backdrop {
  /* properties */
}

有些情况下,WebKit样式会出现一些问题,你最好把这些样式保持简洁。

这些全屏API都超级的简单,而且超级的有用。我第一次是在MDN's BananaBread demo中看到这个API的,那是一个枪击游戏,正好需要全屏化,它使用了事件监听来检测全屏状态。记住这些好用的API,需要的时候可以顺手拈来。

Javascript 相关文章推荐
javascript数组的扩展实现代码集合
Jun 01 Javascript
解决用jquery load加载页面到div时,不执行页面js的问题
Feb 22 Javascript
Node.js插件的正确编写方式
Aug 03 Javascript
Bootstrap下拉菜单效果实例代码分享
Jun 30 Javascript
Bootstrap3使用typeahead插件实现自动补全功能
Jul 07 Javascript
Bootstrap零基础入门教程(二)
Jul 18 Javascript
JS图片左右无缝隙滚动的实现(兼容IE,Firefox 遵循W3C标准)
Sep 23 Javascript
bootstrap Validator 模态框、jsp、表单验证 Ajax提交功能
Feb 17 Javascript
Angular2中select用法之设置默认值与事件详解
May 07 Javascript
vue实现全选和反选功能
Aug 31 Javascript
js 判断一个数字是不是2的n次方幂的实例
Nov 26 Javascript
JavaScript中click和onclick本质区别与用法分析
Jun 07 Javascript
使用jQuery动态加载js脚本文件的方法
Apr 03 #Javascript
jquery图片轮播插件仿支付宝2013版全屏图片幻灯片
Apr 03 #Javascript
JavaScript异步编程Promise模式的6个特性
Apr 03 #Javascript
document.compatMode的CSS1compat使用介绍
Apr 03 #Javascript
javascript实现des解密加密全过程
Apr 03 #Javascript
无刷新预览所选择的图片示例代码
Apr 02 #Javascript
jQuery防止click双击多次提交及传递动态函数或多参数
Apr 02 #Javascript
You might like
mysql 性能的检查和优化方法
2009/06/21 PHP
php启动时候提示PHP startup的解决方法
2013/05/07 PHP
PHP中散列密码的安全性分析
2019/07/26 PHP
调试Javascript代码(浏览器F12及VS中debugger关键字)
2013/01/25 Javascript
jquery验证邮箱格式并显示提交按钮
2015/11/07 Javascript
基于jquery实现图片上传本地预览功能
2016/01/08 Javascript
jquery获取form表单input元素值的简单实例
2016/05/30 Javascript
JavaScript中setTimeout的那些事儿
2016/11/14 Javascript
想学习javascript JS和jQuery哪个重要 先学哪个
2016/12/11 Javascript
js return返回多个值,通过对象的属性访问方法
2017/02/21 Javascript
详解Angular中的自定义服务Service、Provider以及Factory
2017/04/22 Javascript
windows下vue-cli及webpack搭建安装环境
2017/04/25 Javascript
JQuery实现图片轮播效果
2017/05/08 jQuery
原生js二级联动效果
2017/06/20 Javascript
vue新vue-cli3环境配置和模拟json数据的实例
2018/09/19 Javascript
快速对接payjq的个人微信支付接口过程解析
2019/08/15 Javascript
layui table 复选框跳页后再回来保持原来选中的状态示例
2019/10/26 Javascript
JavaScript Event Loop相关原理解析
2020/06/10 Javascript
[03:03]DOTA2校园争霸赛 济南城市决赛欢乐发奖活动
2013/10/21 DOTA
对python中的logger模块全面讲解
2018/04/28 Python
Python实现迭代时使用索引的方法示例
2018/06/05 Python
Python Selenium 之数据驱动测试的实现
2019/08/01 Python
对Tensorflow中tensorboard日志的生成与显示详解
2020/02/04 Python
Python爬虫爬取、解析数据操作示例
2020/03/27 Python
jupyter notebook参数化运行python方式
2020/04/10 Python
jupyter notebook远程访问不了的问题解决方法
2021/01/11 Python
pycharm配置QtDesigner的超详细方法
2021/01/25 Python
CSS3弹性盒模型开发笔记(三)
2016/04/26 HTML / CSS
新东方旗下远程教育网站:新东方在线
2020/03/19 全球购物
工作会议方案
2014/05/21 职场文书
在职党员进社区活动总结
2014/07/05 职场文书
户籍证明格式
2014/09/15 职场文书
个人四风问题整改措施思想汇报
2014/10/04 职场文书
2019年消防宣传标语集锦
2019/11/21 职场文书
Python接口自动化之文件上传/下载接口详解
2022/04/05 Python
windows server2012 R2下安装PaddleOCR服务的的详细步骤
2022/09/23 Servers