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 相关文章推荐
CSDN轮换广告图片轮换效果
Mar 27 Javascript
jquerymobile checkbox及时刷新才能获取其准确值
Apr 14 Javascript
JS定时刷新页面及跳转页面的方法
Jul 04 Javascript
浅析Js(Jquery)中,字符串与JSON格式互相转换的示例(直接运行实例)
Jul 09 Javascript
javascript实现简单的Map示例介绍
Dec 23 Javascript
Jquery $.getJSON 在IE下的缓存问题解决方法
Oct 10 Javascript
原生javascript实现图片弹窗交互效果
Jan 12 Javascript
jQuery鼠标事件汇总
Aug 30 Javascript
JavaScript简单遍历DOM对象所有属性的实现方法
Oct 21 Javascript
js去字符串前后空格的实现方法
Feb 26 Javascript
基于Cookie常用操作以及属性介绍
Sep 07 Javascript
vue 实现剪裁图片并上传服务器功能
Mar 01 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
phpmyadmin里面导入sql语句格式的大量数据的方法
2010/06/05 PHP
Symfony2学习笔记之系统路由详解
2016/03/17 PHP
微信公众平台开发教程①获取用户Openid及个人信息图文详解
2019/04/10 PHP
php数组遍历类与用法示例
2019/05/24 PHP
laravel框架模型、视图与控制器简单操作示例
2019/10/10 PHP
js中cookie的使用详细分析
2008/05/28 Javascript
jquery 学习之二 属性(类)
2010/11/25 Javascript
jquery之超简单的div显示和隐藏特效demo(分享)
2013/07/09 Javascript
js闭包的用途详解
2014/11/09 Javascript
ajax跨域调用webservice的实现代码
2016/05/09 Javascript
jQuery+HTML5实现弹出创意搜索框层
2016/12/29 Javascript
vue.js中Vue-router 2.0基础实践教程
2017/05/08 Javascript
javascript按钮禁用和启用的效果实例代码
2017/10/29 Javascript
webpack配置导致字体图标无法显示的解决方法
2018/03/06 Javascript
checkbox在vue中的用法小结
2018/11/13 Javascript
vue 图片裁剪上传组件的实现
2020/11/12 Javascript
[49:08]完美世界DOTA2联赛PWL S2 LBZS vs FTD.C 第一场 11.27
2020/12/01 DOTA
Python中的Classes和Metaclasses详解
2015/04/02 Python
python决策树之C4.5算法详解
2017/12/20 Python
PyQt5每天必学之QSplitter实现窗口分隔
2018/04/19 Python
浅谈Python基础—判断和循环
2019/03/22 Python
把JSON数据格式转换为Python的类对象方法详解(两种方法)
2019/06/04 Python
pytorch 多分类问题,计算百分比操作
2020/07/09 Python
纯CSS3打造属于自己的“小黄人”
2016/03/14 HTML / CSS
OSPREY LONDON官网:英国本土皮具品牌
2019/05/31 全球购物
网上商城创业计划书范文
2014/01/31 职场文书
公益广告宣传方案
2014/02/28 职场文书
经典广告词大全
2014/03/14 职场文书
个人求职自荐信范文
2014/06/20 职场文书
投标人法定代表人授权委托书格式
2014/09/28 职场文书
2015年母亲节活动总结
2015/02/10 职场文书
教师党员个人总结
2015/02/10 职场文书
承诺书怎么写 ?
2019/04/16 职场文书
HTML5 新增内容和 API详解
2021/11/17 HTML / CSS
MySQL数据库完全卸载的方法
2022/03/03 MySQL
MySQL 数据库 增删查改、克隆、外键 等操作
2022/05/11 MySQL