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 控制内容长度超出规定长度显示省略号
May 23 Javascript
js中confirm实现执行操作前弹出确认框的方法
Nov 01 Javascript
轻松学习Javascript闭包函数
Dec 15 Javascript
深入理解JavaScript 函数
Jun 06 Javascript
jQuery中弹出iframe内嵌页面元素到父页面并全屏化的实例代码
Dec 27 Javascript
ES6中参数的默认值语法介绍
May 03 Javascript
编写React组件项目实践分析
Mar 04 Javascript
JavaScript设计模式之模板方法模式原理与用法示例
Aug 07 Javascript
详解Vue中watch的详细用法
Nov 28 Javascript
Vue中多个元素、组件的过渡及列表过渡的方法示例
Feb 13 Javascript
JS+CSS实现动态时钟
Feb 19 Javascript
用React Native制作一个简单的游戏引擎
May 27 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
第十二节 类的自动加载 [12]
2006/10/09 PHP
php DOS攻击实现代码(附如何防范)
2012/05/29 PHP
PHP漏洞全解(详细介绍)
2012/11/13 PHP
浅析php数据类型转换
2014/01/09 PHP
PHP易混淆函数的区别及用法汇总
2014/11/22 PHP
thinkphp5使用无限极分类
2019/02/18 PHP
jquery 指南/入门基础
2007/11/30 Javascript
JavaScript获取GridView选择的行内容
2009/04/14 Javascript
js中escape对应的C#解码函数 UrlDecode
2012/12/16 Javascript
原生js拖拽(第一课 未兼容)拖拽思路
2013/03/29 Javascript
jquery showModelDialog的使用方法示例详解
2013/11/19 Javascript
运用jQuery写的验证表单(实例讲解)
2017/07/06 jQuery
解决js ajax同步请求造成浏览器假死的问题
2018/01/18 Javascript
微信小程序通过保存图片分享到朋友圈功能
2018/05/24 Javascript
面试题:react和vue的区别分析
2019/04/08 Javascript
JS/CSS实现字符串单词首字母大写功能
2019/09/03 Javascript
Layui数据表格之单元格编辑方式
2019/10/26 Javascript
JS实现音乐导航特效
2020/01/06 Javascript
js验证账户名是否重复
2020/05/26 Javascript
JS如何实现在弹出窗口中加载页面
2020/12/03 Javascript
Python中使用PyQt把网页转换成PDF操作代码实例
2015/04/23 Python
使用Python3编写抓取网页和只抓网页图片的脚本
2015/08/20 Python
pandas object格式转float64格式的方法
2018/04/10 Python
Python3.4 tkinter,PIL图片转换
2018/06/21 Python
Python logging模块用法示例
2018/08/28 Python
python redis连接 有序集合去重的代码
2019/08/04 Python
自定义django admin model表单提交的例子
2019/08/23 Python
Flask 上传自定义头像的实例详解
2020/01/09 Python
Python中包的用法及安装
2020/02/11 Python
在python中使用nohup命令说明
2020/04/16 Python
下列程序在32位linux或unix中的结果是什么
2015/01/26 面试题
售前工程师职业生涯规划
2014/03/02 职场文书
企业安全生产责任书范本
2014/07/28 职场文书
中小学校园安全广播稿
2014/09/29 职场文书
2015年社区工会工作总结
2015/05/26 职场文书
大学生村官驻村工作心得体会
2016/01/23 职场文书