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 相关文章推荐
小议Function.apply()之二------利用Apply的参数数组化来提高 JavaScript程序性能
Nov 30 Javascript
一些技巧性实用js代码小结
Oct 14 Javascript
基于jquery的让textarea自适应高度的插件
Aug 03 Javascript
js将控件隐藏及display属性的使用介绍
Dec 30 Javascript
MVC Ajax Helper或Jquery异步加载部分视图
Nov 29 Javascript
javascript针对cookie的基本操作实例详解
Nov 30 Javascript
webpack使用 babel-loader 转换 ES6代码示例
Aug 21 Javascript
layui radio性别单选框赋值方法
Aug 15 Javascript
js使用文档就绪函数动态改变页面内容示例【innerHTML、innerText】
Nov 07 Javascript
基于vue项目设置resolves.alias: '@'路径并适配webstorm
Dec 02 Vue.js
Vue ECharts实现机舱座位选择展示功能
May 15 Vue.js
vue递归实现树形组件
Jul 15 Vue.js
使用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
xajax写的留言本
2006/11/25 PHP
php MYSQL 数据备份类
2009/06/19 PHP
PHP安全技术之 实现php基本安全
2010/09/04 PHP
php下利用curl判断远程文件是否存在的实现代码
2011/10/08 PHP
PHP容易被忽略而出错陷阱 数字与字符串比较
2011/11/10 PHP
php 删除目录下N分钟前创建的所有文件的实现代码
2013/08/10 PHP
PHP发送短信代码分享
2015/08/11 PHP
php中session定期自动清理的方法
2015/11/12 PHP
PHP代码维护,重构变困难的4种原因分析
2016/01/25 PHP
php微信浏览器分享设置以及回调详解
2016/08/01 PHP
总结一些js自定义的函数
2006/08/05 Javascript
jquery的键盘事件修改代码
2011/02/24 Javascript
jQuery 判断是否包含在数组中Array[]的方法
2016/08/03 Javascript
Web前端开发之水印、图片验证码
2016/11/27 Javascript
小程序实现上下移动切换位置
2019/09/23 Javascript
Eclipse和PyDev搭建完美Python开发环境教程(Windows篇)
2016/11/16 Python
Python字符串处理实例详解
2017/05/18 Python
Tensorflow 训练自己的数据集将数据直接导入到内存
2018/06/19 Python
对python添加模块路径的三种方法总结
2018/10/16 Python
对python自动生成接口测试的示例讲解
2018/11/30 Python
Django框架自定义session处理操作示例
2019/05/27 Python
pandas对dataFrame中某一个列的数据进行处理的方法
2019/07/08 Python
python微信公众号开发简单流程实现
2020/03/09 Python
CSS3 实现弹幕的示例代码
2017/08/07 HTML / CSS
Lands’ End英国官方网站:高质量男女服装
2017/10/07 全球购物
汇智创新科技发展有限公司
2015/12/06 面试题
电话销售经理岗位职责
2013/12/07 职场文书
大学生自我鉴定范文
2013/12/28 职场文书
幼儿园义卖活动方案
2014/01/17 职场文书
国家助学金获奖感言
2014/01/31 职场文书
婚礼司仪主持词
2014/03/14 职场文书
学校先进集体事迹材料
2014/05/31 职场文书
爱岗敬业事迹材料
2019/06/20 职场文书
Linux中Nginx的防盗链和优化的实现代码
2021/06/20 Servers
关于redisson缓存序列化几枚大坑说明
2021/08/04 Redis
漫画「日和酱的要求是绝对的」第3卷封面公开
2022/03/21 日漫