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 相关文章推荐
网页设计常用的一些技巧
Dec 22 Javascript
JavaScript监测ActiveX控件是否已经安装过的代码
Sep 02 Javascript
Js 中debug方式
Feb 07 Javascript
ajax 同步请求和异步请求的差异分析
Jul 04 Javascript
JSON辅助格式化处理方法
Mar 26 Javascript
jQuery插件之Tocify动态节点目录菜单生成器附源码下载
Jan 08 Javascript
利用jquery获取select下拉框的值
Nov 23 Javascript
jQuery zTree树插件动态加载实例代码
May 11 jQuery
4个顶级JavaScript高级文本编辑器
Oct 10 Javascript
详解angular2 控制视图的封装模式
Dec 27 Javascript
JavaScript鼠标悬停事件用法解析
May 15 Javascript
JavaScript语句错误throw、try及catch实例解析
Aug 18 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
LotusPhp笔记之:Cookie组件的使用详解
2013/05/06 PHP
yii2.0整合阿里云oss删除单个文件的方法
2017/09/19 PHP
PHP实现cookie跨域session共享的方法分析
2019/08/23 PHP
新浪的图片新闻效果
2007/01/13 Javascript
jquery tools之tooltip
2009/07/25 Javascript
jQuery基础知识filter()和find()实例说明
2010/07/06 Javascript
html中table数据排序的js代码
2011/08/09 Javascript
xml转json的js代码
2012/08/28 Javascript
jQuery中extend函数详解
2015/02/13 Javascript
深入理解JavaScript系列(44):设计模式之桥接模式详解
2015/03/04 Javascript
第四章之BootStrap表单与图片
2016/04/25 Javascript
jQuery封装的屏幕居中提示信息代码
2016/06/08 Javascript
深入理解Node.js 事件循环和回调函数
2016/11/02 Javascript
JS实现的适合做faq或menu滑动效果示例
2016/11/17 Javascript
微信小程序 获取当前地理位置和经纬度实例代码
2016/12/05 Javascript
利用select实现年月日三级联动的日期选择效果【推荐】
2016/12/13 Javascript
ES6中Math对象的部分扩展
2017/02/20 Javascript
详解AngularJs HTTP响应拦截器实现登陆、权限校验
2017/04/11 Javascript
jQuery基于cookie实现换肤功能实例
2017/10/14 jQuery
layui select动态添加option的实例
2018/03/07 Javascript
js闭包学习心得总结
2018/04/17 Javascript
基于原生js实现九宫格算法代码实例
2020/07/03 Javascript
简单了解three.js 着色器材质
2020/08/03 Javascript
探究一道价值25k的蚂蚁金服异步串行面试题
2020/08/21 Javascript
python通过yield实现数组全排列的方法
2015/03/18 Python
深入学习Python中的上下文管理器与else块
2017/08/27 Python
python利用正则表达式排除集合中字符的功能示例
2017/10/10 Python
python爬虫之BeautifulSoup 使用select方法详解
2017/10/23 Python
django允许外部访问的实例讲解
2018/05/14 Python
pytorch获取模型某一层参数名及参数值方式
2019/12/30 Python
python 非线性规划方式(scipy.optimize.minimize)
2020/02/11 Python
HTML5 拖放功能实现代码
2016/07/14 HTML / CSS
2014组织生活会方案
2014/05/19 职场文书
党员转正意见怎么写
2015/06/03 职场文书
教学副校长工作总结
2015/08/13 职场文书
PHP新手指南
2021/04/01 PHP