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 相关文章推荐
自己实现string的substring方法 人民币小写转大写,数字反转,正则优化
Sep 02 Javascript
javascript中为某个元素指定事件的三种方式
Aug 07 Javascript
javascript中call,apply,bind的用法对比分析
Feb 12 Javascript
如何编写高质量JS代码(续)
Feb 25 Javascript
JS动态插入并立即执行回调函数的方法
Apr 21 Javascript
JavaScript操作 url 中 search 部分方法函数
Jun 15 Javascript
微信小程序 rpx 尺寸单位详细介绍
Oct 13 Javascript
Javascript实现页面滚动时导航智能定位
May 06 Javascript
JavaScript基础之流程控制语句的用法
Aug 31 Javascript
Django+Vue跨域环境配置详解
Jul 06 Javascript
Nuxt.js之自动路由原理的实现方法
Nov 21 Javascript
基于mpvue的简单弹窗组件mptoast使用详解
Aug 02 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使用DES进行加密与解密的方法详解
2013/06/06 PHP
关于php程序报date()警告的处理(date_default_timezone_set)
2013/10/22 PHP
php最简单的删除目录与文件实现方法
2014/11/28 PHP
php连接oracle数据库及查询数据的方法
2014/12/29 PHP
解读PHP中的垃圾回收机制
2015/08/10 PHP
PHP操作MySQL的mysql_fetch_* 函数的常见用法教程
2015/12/25 PHP
PHP实现的下载远程文件类定义与用法示例
2017/07/05 PHP
JS中的prototype与面向对象的实例讲解
2013/05/22 Javascript
jquery学习总结(超级详细)
2014/09/04 Javascript
JavaScript中5种调用函数的方法
2015/03/12 Javascript
利用Ionic2 + angular4实现一个地区选择组件
2017/07/27 Javascript
Angularjs 事件指令详细整理
2017/07/27 Javascript
webpack中CommonsChunkPlugin详细教程(小结)
2017/11/09 Javascript
axios进阶实践之利用最优雅的方式写ajax请求
2017/12/20 Javascript
简单谈谈javascript高级特性
2019/09/04 Javascript
JavaScript实现简单的图片切换功能(实例代码)
2020/04/10 Javascript
[45:56]Ti4正赛第一天 VG vs NEWBEE 3
2014/07/19 DOTA
简单介绍Python中的filter和lambda函数的使用
2015/04/07 Python
Python实现简单的代理服务器
2015/07/25 Python
浅谈Python类的__getitem__和__setitem__特殊方法
2016/12/25 Python
python 连接sqlite及简单操作
2017/06/30 Python
python3.4+pycharm 环境安装及使用方法
2019/06/13 Python
Djang的model创建的字段和参数详解
2019/07/27 Python
opencv设置采集视频分辨率方式
2019/12/10 Python
在win64上使用bypy进行百度网盘文件上传功能
2020/01/02 Python
python中如何写类
2020/06/29 Python
Django ModelForm组件原理及用法详解
2020/10/12 Python
python 三种方法实现对Excel表格的读写
2020/11/19 Python
加拿大快时尚零售商:Ardene
2018/02/14 全球购物
中国专业的音频分享平台:喜马拉雅
2019/05/24 全球购物
长辈证婚人证婚词
2014/01/09 职场文书
干部现实表现材料
2014/02/13 职场文书
《春到梅花山》教学反思
2014/04/16 职场文书
环保建议书600字
2014/05/14 职场文书
中国文明网2015年“向国旗敬礼”活动网上签名寄语
2015/09/24 职场文书
JS前端canvas交互实现拖拽旋转及缩放示例
2022/08/05 Javascript