JS 全屏和退出全屏详解及实例代码


Posted in Javascript onNovember 07, 2016

JS 全屏和退出全屏

js实现浏览器窗口全屏和退出全屏的功能,市面上主流浏览器如:谷歌、火狐、360等都是兼容的,不过IE低版本有点瑕疵(全屏状态下仍有底部的状态栏)。

这个demo基本是够了,直接复制下面的源码另存为html文件看效果吧。

<!DOCTYPE html>
<html>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>js全屏和退出全屏代码</title>
<body>
<!-- requestFullScreen(document.documentElement): 整个网页进入全屏
  requestFullScreen(document.getElementById("video-box")): 指定某块区域全屏
 -->
<button onclick="requestFullScreen(document.documentElement)">全屏显示</button>
<button onclick="exitFull()">退出全屏</button>
</body>
<script type="text/javascript">
function requestFullScreen(element) {
 // 判断各种浏览器,找到正确的方法
 var requestMethod = element.requestFullScreen || //W3C
 element.webkitRequestFullScreen || //Chrome等
 element.mozRequestFullScreen || //FireFox
 element.msRequestFullScreen; //IE11
 if (requestMethod) {
  requestMethod.call(element);
 }
 else if (typeof window.ActiveXObject !== "undefined") {//for Internet Explorer
  var wscript = new ActiveXObject("WScript.Shell");
  if (wscript !== null) {
   wscript.SendKeys("{F11}");
  }
 }
}

//退出全屏 判断浏览器种类

function exitFull() {
 // 判断各种浏览器,找到正确的方法
 var exitMethod = document.exitFullscreen || //W3C
 document.mozCancelFullScreen || //Chrome等
 document.webkitExitFullscreen || //FireFox
 document.webkitExitFullscreen; //IE11
 if (exitMethod) {
  exitMethod.call(document);
 }
 else if (typeof window.ActiveXObject !== "undefined") {//for Internet Explorer
  var wscript = new ActiveXObject("WScript.Shell");
  if (wscript !== null) {
   wscript.SendKeys("{F11}");
  }
 }
}
</script>
</html>

感谢阅读,希望嫩帮助到大家,谢谢大家对本站的支持!

以下是其它网友的补充

我们知道,浏览器全屏通常按快捷键F11。JS控制浏览器全屏也不稀奇,它让Web应用看上去更像似原生软件应用效果。比如点餐系统、叫号系统等等。

JS让浏览器全屏及退出全屏的方法网上很多,这不是重点,重点是需注意:浏览器全屏只能通过鼠标手势点击事件去触发。

JS全屏方法

var $fullScreen = document.getElementById("js-fullScreen");//按钮 
if ($fullScreen) { 
  $fullScreen.addEventListener("click", function () { 
    var docElm = document.documentElement; 
    if (docElm.requestFullscreen) { 
      docElm.requestFullscreen(); 
    } 
    else if (docElm.msRequestFullscreen) { 
      docElm.msRequestFullscreen(); 
    } 
    else if (docElm.mozRequestFullScreen) { 
      docElm.mozRequestFullScreen(); 
    } 
    else if (docElm.webkitRequestFullScreen) { 
      docElm.webkitRequestFullScreen(); 
    } 
  }, false); 
}

JS退出全屏方法

var $cancelFullScreen = document.getElementById("js-cancelFullScreen"); 
if ($cancelFullScreen) { 
  $cancelFullScreen.addEventListener("click", function () { 
    if (document.exitFullscreen) { 
      document.exitFullscreen(); 
    } 
    else if (document.msExitFullscreen) { 
      document.msExitFullscreen(); 
    } 
    else if (document.mozCancelFullScreen) { 
      document.mozCancelFullScreen(); 
    } 
    else if (document.webkitCancelFullScreen) { 
      document.webkitCancelFullScreen(); 
    } 
  }, false); 
}

控制台警告

Failed to execute 'requestFullscreen' on 'Element': API can only be initiated by a user gesture.

释义:在"Element"上执行"requestFullscreen"方法失败,javascript API仅允许通过手势去创建!(即没有权限)

通常是由于程序员想触发浏览器自动全屏显示而导致。但是很抱歉,此方法行不通,必须通过手势去创建,哪怕onload、trigger()、mouseover也触发不了!

官方解释

该Element.requestFullscreen()方法发出异步请求,使元素全屏显示。但不能保证元素将被放入全屏模式。

如果允许进入全屏模式,文档将收到一个fullscreenchange事件,让它知道它现在处于全屏模式。如果权限被拒绝,则文档会接收到一个fullscreenerror事件。

结论

可能出于用户操作体验的考虑吧,客户端javascript让浏览器全屏只能通过鼠标手势点击事件去触发,即click()。

Javascript 相关文章推荐
关于 byval 与 byref 的区别分析总结
Oct 08 Javascript
javascript实现动态侧边栏代码
Feb 19 Javascript
关于JavaScript对象的动态选择及遍历对象
Mar 10 Javascript
jquery中validate与form插件提交的方式小结
Mar 26 Javascript
jQuery无刷新上传之uploadify简单代码
Jan 17 Javascript
js实现常见的工具条效果
Mar 02 Javascript
基于node.js的fs核心模块读写文件操作(实例讲解)
Sep 10 Javascript
浅谈node中的cluster集群
Jun 02 Javascript
jQuery实现的老虎机跑动效果示例
Dec 29 jQuery
详解js location.href和window.open的几种用法和区别
Dec 02 Javascript
vue中使用router全局守卫实现页面拦截的示例
Oct 23 Javascript
vant时间控件使用方法详解
Dec 24 Javascript
easyui tree带checkbox实现单选的简单实例
Nov 07 #Javascript
vue.js初学入门教程(2)
Nov 07 #Javascript
AngularJS递归指令实现Tree View效果示例
Nov 07 #Javascript
基于Bootstrap仿淘宝分页控件实现代码
Nov 07 #Javascript
浅谈移动端之js touch事件 手势滑动事件
Nov 07 #Javascript
jquery获取table指定行和列的数据方法(当前选中行、列)
Nov 07 #Javascript
AngularJS实现Input格式化的方法
Nov 07 #Javascript
You might like
PHP注释语法规范与命名规范详解篇
2018/01/21 PHP
tp5(thinkPHP5)框架实现多数据库查询的方法
2019/01/10 PHP
PHP匿名函数(闭包函数)详解
2019/03/22 PHP
不常用但很实用的PHP预定义变量分析
2019/06/25 PHP
Javascript insertAfter() 实现函数代码
2011/10/12 Javascript
jquery的flexigrid无法显示数据提示获取到数据
2013/07/19 Javascript
javascript版的in_array函数(判断数组中是否存在特定值)
2014/05/09 Javascript
js实现透明度渐变效果的方法
2015/04/10 Javascript
js表单验证实例讲解
2016/03/31 Javascript
Jquery对新插入的节点 绑定Click事件失效的解决方法
2016/06/02 Javascript
JS查找字符串中出现次数最多的字符
2016/09/05 Javascript
Boostrap基础教程之JavaScript插件篇
2016/09/08 Javascript
详解XMLHttpRequest(二)响应属性、二进制数据、监测上传下载进度
2016/09/14 Javascript
jquery动态创建div与input的实例代码
2016/10/12 Javascript
jQuery插件ajaxFileUpload使用实例解析
2016/10/19 Javascript
微信小程序 简单教程实例详解
2017/01/13 Javascript
jQuery Ajax全解析
2017/02/13 Javascript
Vuex之理解state的用法实例
2017/04/19 Javascript
JavaScript之DOM_动力节点Java学院整理
2017/07/03 Javascript
使用jquery的jsonp如何发起跨域请求及其原理详解
2017/08/17 jQuery
webpack 从指定入口文件中提取公共文件的方法
2018/11/13 Javascript
vue+eslint+vscode配置教程
2019/08/09 Javascript
在LayUI图片上传中,解决由跨域问题引起的请求接口错误的方法
2019/09/24 Javascript
Python中的列表生成式与生成器学习教程
2016/03/13 Python
在 Windows 下搭建高效的 django 开发环境的详细教程
2020/07/27 Python
使用before和:after伪类制作css3圆形按钮
2014/04/08 HTML / CSS
Booking.com美国:全球酒店预订网站
2017/04/18 全球购物
L’urv官网:精品女性运动服品牌
2019/07/07 全球购物
德国在线香料制造商:Gewürzland
2020/03/10 全球购物
物流仓储计划书
2014/01/10 职场文书
大二学习计划书范文
2014/04/27 职场文书
大学三年计划书范文
2014/04/30 职场文书
运动会班级口号
2014/06/09 职场文书
中学生社会实践教育活动总结
2015/05/06 职场文书
用人单位的规章制度,怎样制定才是有效的?
2019/07/09 职场文书
delete in子查询不走索引问题分析
2022/07/07 MySQL