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 相关文章推荐
让ie运行js时提示允许阻止内容运行的解决方法
Oct 24 Javascript
客户端限制只能上传jpg格式图片的js代码
Dec 09 Javascript
javascript类型转换使用方法
Feb 08 Javascript
JavaScript内存管理介绍
Mar 13 Javascript
学习javascript面向对象 实例讲解面向对象选项卡
Jan 04 Javascript
修复jQuery tablesorter无法正确排序的bug(加千分位数字后)
Mar 30 Javascript
BootStrap的alert提示框的关闭后再显示怎么解决
May 17 Javascript
使用vue.js制作分页组件
Jun 27 Javascript
JQuery EasyUI学习教程之datagrid 添加、修改、删除操作
Jul 09 Javascript
JavaScript闭包和回调详解
Aug 09 Javascript
使用原生js封装的ajax实例(兼容jsonp)
Oct 12 Javascript
在vue中配置不同的代理同时访问不同的后台操作
Sep 11 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语言构造器介绍
2013/07/08 PHP
织梦sitemap地图实时推送给百度的教程
2015/08/03 PHP
如何使用微信公众平台开发模式实现多客服
2016/01/06 PHP
在Javascript中为String对象添加trim,ltrim,rtrim方法
2006/09/22 Javascript
25个非常棒的jQuery滑块插件和教程小结
2011/09/02 Javascript
Jquery弹出窗口插件 LeanModal的使用方法
2012/03/10 Javascript
javascript 保存文件到本地实现方法
2012/11/29 Javascript
Angular.js之作用域scope'@','=','&'实例详解
2017/02/28 Javascript
angular4 共享服务在多个组件中数据通信的示例
2018/03/30 Javascript
node app 打包工具pkg的具体使用
2019/01/17 Javascript
基于JS实现父组件的请求服务过程解析
2019/10/14 Javascript
如何在现代JavaScript中编写异步任务
2021/01/31 Javascript
[02:39]DOTA2国际邀请赛助威团西雅图第一天
2013/08/08 DOTA
Python中set与frozenset方法和区别详解
2016/05/23 Python
Python入门_浅谈逻辑判断与运算符
2017/05/16 Python
Django框架设置cookies与获取cookies操作详解
2019/05/27 Python
win10安装tensorflow-gpu1.8.0详细完整步骤
2020/01/20 Python
python GUI库图形界面开发之PyQt5信号与槽的高级使用技巧装饰器信号与槽详细使用方法与实例
2020/03/06 Python
Python语法垃圾回收机制原理解析
2020/03/25 Python
python动态规划算法实例详解
2020/11/22 Python
HTML5 WebGL 实现民航客机飞行监控系统
2019/07/25 HTML / CSS
html5 canvas合成海报所遇问题及解决方案总结
2017/08/03 HTML / CSS
AmazeUI 导航条的实现示例
2020/08/14 HTML / CSS
巴西家用小家电购物网站:Polishop
2016/08/07 全球购物
Boden美国官网:英伦原创时装品牌
2017/07/03 全球购物
意大利奢华内衣制造商:Cosabella
2017/08/29 全球购物
巴黎欧莱雅法国官网:L’Oreal Paris
2019/04/30 全球购物
将一个数的从第5位开始的7个数取出,其余位置0
2016/05/26 面试题
车间操作工岗位职责
2013/12/19 职场文书
小学生评语集锦
2014/04/18 职场文书
物业公司的岗位任命书
2014/06/06 职场文书
2015毕业生自我评价范文
2015/03/02 职场文书
2015年三年级班主任工作总结
2015/05/21 职场文书
2015年教研员工作总结
2015/05/26 职场文书
Python使用scapy模块发包收包
2021/05/07 Python
Go语言grpc和protobuf
2022/04/13 Golang