JavaScript控制浏览器全屏及各种浏览器全屏模式的方法、属性和事件


Posted in Javascript onDecember 20, 2015

HTML 5中的full screen,目前可以在除IE和opera外的浏览器中使用 ,有的时候用来做全屏API,游戏呀,等都很有用。先看常见的API

 element.requestFullScreen()

 作用:请求某个元素element全屏

Document.getElementById(“myCanvas”).requestFullScreen()

  这里是将其中的元素ID去请求fullscreen

退出全屏

  document.cancelFullScreen()

Document.fullScreen

  如果用户在全屏模式下,则返回true

 document.fullScreenElement

  返回当前处于全屏模式下的元素

   下面的代码是开启全屏模式:

function fullScreen(element) { 
  if(element.requestFullScreen) { 
  element.requestFullScreen(); 
 } else if(element.webkitRequestFullScreen ) { 
   element.webkitRequestFullScreen(); 
  } else if(element.mozRequestFullScreen) { 
  element.mozRequestFullScreen(); 
 } 
 }

    下面的代码就是整个页面调用全屏模式

      不过老实说,FULL SCREEN有个问题,容易造成欺骗,比如在
http://feross.org/html5-fullscreen-api-attack/中,其中就有一个很好的DEMO,去欺骗了,比如某个链结写的是http://www.bankofamerica.com,大家以为是美国银行,一点进去,因为使用了全屏幕API,就会欺骗到人 

$('html').on('click keypress', 'a', function(event) { 
  // 不响应真正的A HREF点击事件 
 event.preventDefault(); 
  event.stopPropagation(); 
  // Trigger fullscreen 
  if (elementPrototype.requestFullscreen) { 
   document.documentElement.requestFullscreen(); 
  } else if (elementPrototype.webkitRequestFullScreen) { 
   document.documentElement.webkitRequestFullScreen(Element.ALLOW_KEYBOARD_INPUT); 
  } else if (elementPrototype.mozRequestFullScreen) { 
   document.documentElement.mozRequestFullScreen(); 
  } else { 
   // 
  } 
  //显示假的UI 
  $('#menu, #browser').show(); 
  $('#target-site').show(); 
 });

下面给大家介绍JavaScript控制各种浏览器全屏模式的方法、属性和事件介绍

浏览器全屏模式的启动函数requestFullscreen仍然需要附带各浏览器的js方言前缀,相信下面这段代码需要你花大量的搜索才能凑齐:

代码如下:

// 判断各种浏览器,找到正确的方法
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: %;
 height: %;
}
/* styling the backdrop*/
::backdrop {
 /* properties */
}
::-ms-backdrop {
 /* properties */
}

有些情况下,WebKit样式会出现一些问题,你最好把这些样式保持简洁。

这些全屏API都超级的简单,而且超级的有用。我第一次是在MDN's BananaBread demo中看到这个API的,那是一个枪击游戏,正好需要全屏化,它使用了事件监听来检测全屏状态。记住这些好用的API,需要的时候可以顺手拈来。

 

Javascript 相关文章推荐
JavaScript 学习初步 入门教程
Mar 25 Javascript
node在两个div之间移动,用ztree实现
Mar 06 Javascript
简单漂亮的js弹窗可自由拖拽且兼容大部分浏览器
Oct 22 Javascript
jQuery 设置 CSS 属性示例介绍
Jan 16 Javascript
一个不错的字符串转码解码函数(自写)
Jul 31 Javascript
js闭包的用途详解
Nov 09 Javascript
js如何判断输入字符串长度
Dec 16 Javascript
RequireJS 依赖关系的实例(推荐)
Jan 21 Javascript
fetch 使用及如何接收JS传值
Nov 11 Javascript
微信小程序BindTap快速连续点击目标页面跳转多次问题处理
Apr 08 Javascript
深入解析vue 源码目录及构建过程分析
Apr 24 Javascript
ES6 Array常用扩展的应用实例分析
Jun 26 Javascript
基于jQuery和CSS3制作响应式水平时间轴附源码下载
Dec 20 #Javascript
jQuery mobile 移动web(4)
Dec 20 #Javascript
基于jQuery实现放大镜特效
Oct 19 #Javascript
jQuery mobile 移动web(6)
Dec 20 #Javascript
jquery mobile 移动web(5)
Dec 20 #Javascript
js倒计时抢购实例
Dec 20 #Javascript
js代码实现点击按钮出现60秒倒计时
Jan 28 #Javascript
You might like
一个PHP并发访问实例代码
2012/09/06 PHP
CodeIgniter实现更改view文件夹路径的方法
2014/07/04 PHP
PHP中mysqli_affected_rows作用行数返回值分析
2014/12/26 PHP
PHP输出图像imagegif、imagejpeg与imagepng函数用法分析
2016/11/14 PHP
php微信公众平台示例代码分析(二)
2016/12/06 PHP
PHP获取文件扩展名的常用方法小结【五种方式】
2018/04/27 PHP
php更新cookie内容的详细方法
2019/09/30 PHP
PHP fopen中文文件名乱码问题解决方案
2020/10/28 PHP
jquery 选择器部分整理
2009/10/28 Javascript
基于jquery+thickbox仿校内登录注册框
2010/06/07 Javascript
基于promise.js实现nodejs的promises库
2014/07/06 NodeJs
javascript电商网站抢购倒计时效果实现
2015/11/19 Javascript
三种AngularJS中获取数据源的方式
2016/02/02 Javascript
BootStrap中Table分页插件使用详解
2016/10/09 Javascript
JavaScript中return用法示例
2016/11/29 Javascript
jquery表单验证插件validation使用方法详解
2017/01/20 Javascript
微信小程序 数据交互与渲染实例详解
2017/01/21 Javascript
fckeditor部署到weblogic出现xml无法读取及样式不能显示问题的解决方法
2017/03/24 Javascript
JavaScript数据结构之广义表的定义与表示方法详解
2017/04/12 Javascript
VUE渲染后端返回含有script标签的html字符串示例
2019/10/28 Javascript
[00:09]DOTA2新版本PA至宝特效动作展示
2014/11/19 DOTA
python通过装饰器检查函数参数数据类型的方法
2015/03/13 Python
以Flask为例讲解Python的框架的使用方法
2015/04/29 Python
Python2实现的图片文本识别功能详解
2018/07/11 Python
对Python实现简单的API接口实例讲解
2018/12/10 Python
在python3中实现更新界面
2020/02/21 Python
浅谈Python 函数式编程
2020/06/20 Python
Python基于gevent实现文件字符串查找器
2020/08/11 Python
CSS3 透明色 RGBA使用介绍
2013/08/06 HTML / CSS
HTML5之多线程(Web Worker)
2019/01/02 HTML / CSS
印度在线杂货店:bigbasket
2018/08/23 全球购物
代码中finally中的代码会不会执行
2012/02/06 面试题
二手书店创业计划书
2014/01/16 职场文书
机关道德讲堂实施方案
2014/03/15 职场文书
关爱留守儿童倡议书
2014/04/15 职场文书
幼儿园户外活动总结
2014/07/04 职场文书