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 相关文章推荐
JavaScript中的原型继承基础学习教程
May 06 Javascript
JS获取鼠标选中的文字
Aug 10 Javascript
jquery+html仿翻页相册功能
Dec 20 Javascript
vue组件实例解析
Jan 10 Javascript
JS实现标签滚动切换效果
Dec 25 Javascript
vue-router重定向不刷新问题的解决
Jun 25 Javascript
elementUI 动态生成几行几列的方法示例
Jul 11 Javascript
jQuery zTree插件快速实现目录树
Aug 16 jQuery
解决Layui数据表格的宽高问题
Sep 28 Javascript
vue组件添加事件@click.native操作
Oct 30 Javascript
vue项目页面嵌入代码块vue-prism-editor的实现
Oct 30 Javascript
解决vant框架做H5时踩过的坑(下拉刷新、上拉加载等)
Nov 11 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
sourcesafe管理phpproj文件的补充说明(downmoon)
2009/04/11 PHP
将博客园(cnblogs.com)数据导入到wordpress的代码
2013/01/06 PHP
php字符串函数学习之strstr()
2015/03/27 PHP
php中define用法实例
2015/07/30 PHP
Symfony2 session用法实例分析
2016/02/04 PHP
[原创]PHP字符串中插入子字符串方法总结
2016/05/06 PHP
Yii2简单实现多语言配置的方法
2016/07/23 PHP
laravel框架添加数据,显示数据,返回成功值的方法
2019/10/11 PHP
Yii框架的redis命令使用方法简单示例
2019/10/15 PHP
PHP实现创建一个RPC服务操作示例
2020/02/23 PHP
PHP实现简单的计算器
2020/08/28 PHP
对google个性主页的拖拽效果的js的完整注释[转]
2007/04/10 Javascript
js ondocumentready onmouseover onclick onmouseout 样式
2010/07/22 Javascript
Javascript 八进制转义字符(8进制)
2011/04/08 Javascript
Javascript数组与字典用法分析
2014/12/13 Javascript
jQuery中:button选择器用法实例
2015/01/04 Javascript
让JavaScript中setTimeout支持链式操作的方法
2015/06/19 Javascript
JavaScript中利用Array和Object实现Map的方法
2015/07/27 Javascript
Angular.js与Bootstrap相结合实现手风琴菜单代码
2016/04/13 Javascript
jQuery UI插件实现百度提词器效果
2016/11/21 Javascript
基于JavaScript实现前端数据多条件筛选功能
2020/08/19 Javascript
python中ConfigParse模块的用法
2014/09/29 Python
python中的字符串内部换行方法
2018/07/19 Python
Python实现多属性排序的方法
2018/12/05 Python
python利用requests库模拟post请求时json的使用教程
2018/12/07 Python
在python中以相同顺序shuffle两个list的方法
2018/12/13 Python
python找出列表中大于某个阈值的数据段示例
2019/11/24 Python
浅谈利用缓存来优化HTML5 Canvas程序的性能
2015/05/12 HTML / CSS
塔吉特百货公司官网:Target
2017/04/27 全球购物
自我评价个人范文
2013/12/16 职场文书
学生会部长竞聘书
2014/03/31 职场文书
竞聘演讲报告:基本写作有哪些?附开头范文
2019/10/16 职场文书
Flask搭建一个API服务器的步骤
2021/05/28 Python
修改并编译golang源码的操作步骤
2021/07/25 Golang
Golang中channel的原理解读(推荐)
2021/10/16 Golang
前端监听websocket消息并实时弹出(实例代码)
2021/11/27 Javascript