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 相关文章推荐
表头固定(利用jquery实现原理介绍)
Nov 08 Javascript
javascript屏蔽右键代码
May 15 Javascript
js实现局部页面打印预览原理及示例代码
Jul 03 Javascript
javascript进行四舍五入方法汇总
Dec 16 Javascript
jQuery+PHP+MySQL实现无限级联下拉框效果
Feb 19 Javascript
JS获取字符串实际长度(包含汉字)的简单方法
Aug 11 Javascript
jQuery Easyui Treegrid实现显示checkbox功能
Aug 08 jQuery
BootStrap下的弹出框加载select2框架失败的解决方法
Aug 31 Javascript
微信小程序云开发使用方法新手初体验
May 16 Javascript
理解JavaScript中的Proxy 与 Reflection API
Sep 21 Javascript
在vue中使用jsonp进行跨域请求接口操作
Oct 29 Javascript
基于ajax实现上传图片代码示例解析
Dec 03 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
php利用事务处理转账问题
2015/04/22 PHP
使用PHP接受文件并获得其后缀名的方法
2015/08/05 PHP
PDO操作MySQL的基础教程(推荐)
2017/08/18 PHP
IE7中javascript操作CheckBox的checked=true不打勾的解决方法
2009/12/07 Javascript
getElementByIdx_x js自定义getElementById函数
2012/01/24 Javascript
javascript中的void运算符语法及使用介绍
2013/03/10 Javascript
jQuery 监控键盘一段时间没输入
2016/04/22 Javascript
javascript时间差插件分享
2016/07/18 Javascript
纯原生js实现table表格的增删
2017/01/05 Javascript
vue小图标favicon不显示的解决方案
2017/09/19 Javascript
React Native中TabBarIOS的简单使用方法示例
2017/10/13 Javascript
three.js加载obj模型的实例代码
2017/11/10 Javascript
在vue使用clipboard.js进行一键复制文本的实现示例
2019/01/15 Javascript
vue自定义表单生成器form-create使用详解
2019/07/19 Javascript
OpenLayers3实现地图鹰眼以及地图比例尺的添加
2020/09/25 Javascript
学习python的几条建议分享
2013/02/10 Python
盘点提高 Python 代码效率的方法
2014/07/03 Python
django DRF图片路径问题的解决方法
2018/09/10 Python
Appium+python自动化怎么查看程序所占端口号和IP
2019/06/14 Python
Python中栈、队列与优先级队列的实现方法
2019/06/30 Python
Django urls.py重构及参数传递详解
2019/07/23 Python
pytorch .detach() .detach_() 和 .data用于切断反向传播的实现
2019/12/27 Python
如何在python中实现线性回归
2020/08/10 Python
CSS3中Animation属性的使用详解
2015/08/06 HTML / CSS
会走路的树教学反思
2014/02/20 职场文书
爽歪歪广告词
2014/03/20 职场文书
质量负责人任命书
2014/06/06 职场文书
租房协议书范例
2014/10/14 职场文书
员工离职感谢信
2015/01/22 职场文书
2015年十一国庆节演讲稿
2015/03/20 职场文书
2017寒假社会实践心得体会范文
2016/01/14 职场文书
公司与个人合作协议书
2016/03/19 职场文书
Mysql 如何查询时间段交集
2021/06/08 MySQL
python 详解turtle画爱心代码
2022/02/15 Python
升级 Win11 还是坚守 Win10?微软 Win11 新系统缺失功能大盘点
2022/04/05 数码科技
详解Flutter和Dart取消Future的三种方法
2022/04/07 Java/Android