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实现图文切换效果另加特效
Jan 20 Javascript
jquery validate 自定义验证方法介绍 日期验证
Feb 27 Javascript
jquery插件unobtrusive实现片段式加载
Jun 15 Javascript
基于jquery实现图片上传本地预览功能
Jan 08 Javascript
全面解析JavaScript中的valueOf与toString方法(推荐)
Jun 14 Javascript
jQuery实现的导航下拉菜单效果
Jul 04 Javascript
原生JS实现图片轮播效果
Dec 26 Javascript
JavaScript hasOwnProperty() 函数实例详解
Aug 04 Javascript
使用百度地图实现地图网格的示例
Feb 06 Javascript
基于vue-cli 打包时抽离项目相关配置文件详解
Mar 07 Javascript
JS实现li标签的删除
Apr 12 Javascript
Javascript Symbol原理及使用方法解析
Oct 22 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(1) php开发环境配置
2010/02/15 PHP
php 定界符格式引起的错误
2011/05/24 PHP
php环境配置之CGI、FastCGI、PHP-CGI、PHP-FPM、Spawn-FCGI比较?
2011/10/17 PHP
php后台如何避免用户直接进入方法实例
2013/10/15 PHP
encode脚本和normal脚本混用的问题与解决方法
2007/03/08 Javascript
用js调用迅雷下载代码的二种方法
2013/04/15 Javascript
jQuery判断元素是否存在的可靠方法
2014/05/06 Javascript
javascript实现动态模态绑定grid过程代码
2014/09/22 Javascript
使用js画图之圆、弧、扇形
2015/01/12 Javascript
js与applet相互调用的方法
2016/06/22 Javascript
详解JS中的this、apply、call、bind(经典面试题)
2017/09/19 Javascript
防止页面url缓存中ajax中post请求的处理方法
2017/10/10 Javascript
vue mintui-Loadmore结合实现下拉刷新和上拉加载示例
2017/10/12 Javascript
vue实现nav导航栏的方法
2017/12/13 Javascript
Angular2中监听数据更新的方法
2018/08/31 Javascript
JS实现可视化文件上传
2018/09/08 Javascript
React学习之受控组件与数据共享实例分析
2020/01/06 Javascript
[48:39]Ti4主赛事胜者组第一天 EG vs NEWBEE 2
2014/07/19 DOTA
[02:34]2016完美“圣”典风云人物:BurNIng专访
2016/12/10 DOTA
跟老齐学Python之使用Python操作数据库(1)
2014/11/25 Python
在Python中处理字符串之ljust()方法的使用简介
2015/05/19 Python
python实现爬虫统计学校BBS男女比例之多线程爬虫(二)
2015/12/31 Python
Python编程给numpy矩阵添加一列方法示例
2017/12/04 Python
Python实现多态、协议和鸭子类型的代码详解
2019/05/05 Python
PyTorch中Tensor的拼接与拆分的实现
2019/08/18 Python
python numpy存取文件的方式
2020/04/01 Python
基于python实现计算两组数据P值
2020/07/10 Python
pycharm配置安装autopep8自动规范代码的实现
2021/03/02 Python
The North Face北面美国官网:美国著名户外品牌
2018/09/15 全球购物
Tommy Hilfiger澳洲官网:美国高端休闲领导品牌
2020/12/16 全球购物
strlen的几种不同实现方法
2013/05/31 面试题
专业求职信撰写要诀
2014/02/18 职场文书
六一儿童节标语
2014/10/08 职场文书
2014年会计人员工作总结
2014/12/10 职场文书
指导教师推荐意见
2015/06/05 职场文书
婚礼嘉宾致辞
2015/07/28 职场文书