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 相关文章推荐
javascript document.images实例
May 27 Javascript
基于jquery固定于顶部的导航响应浏览器滚动条事件
Nov 02 Javascript
跟我学习javascript解决异步编程异常方案
Nov 23 Javascript
Bootstrap 手风琴菜单的实现代码
Jan 20 Javascript
浅谈javascript中的 “ &amp;&amp; ” 和 “ || ”
Feb 02 Javascript
微信小程序 登录的简单实现
Apr 19 Javascript
vuejs父子组件之间数据交互详解
Aug 09 Javascript
JS小球抛物线轨迹运动的两种实现方法详解
Dec 20 Javascript
详解如何在vue项目中使用lodop打印插件
Sep 27 Javascript
浅谈微信页面入口文件被缓存解决方案
Sep 29 Javascript
js作用域和作用域链及预解析
Apr 11 Javascript
vue-openlayers实现地图坐标弹框效果
Sep 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
mysql中存储过程、函数的一些问题
2007/02/14 PHP
php处理restful请求的路由类分享
2014/02/27 PHP
php时间函数用法分析
2016/05/28 PHP
PHP实现多关键字加亮功能
2016/10/21 PHP
LaravelS通过Swoole加速Laravel/Lumen详解
2018/03/02 PHP
PHP字符串中抽取子串操作实例分析
2019/06/22 PHP
laravel框架邮箱认证实现方法详解
2019/11/22 PHP
B/S模式项目中常用的javascript汇总
2013/12/17 Javascript
单元选择合并变色示例代码
2014/05/26 Javascript
JavaScript中实现继承的三种方式和实例
2015/01/29 Javascript
NodeJs的fs读写删除移动监听
2017/04/28 NodeJs
JS实现字符串翻转的方法分析
2018/08/31 Javascript
vue移动端屏幕适配详解
2019/04/30 Javascript
JavaScript获取某一天所在的星期
2019/09/05 Javascript
微信小程序全选多选效果实现代码解析
2020/01/21 Javascript
[02:51]DOTA2 Supermajor小组分组对阵抽签仪式
2018/06/01 DOTA
python3.3实现乘法表示例
2014/02/07 Python
使用python实现省市三级菜单效果
2016/01/20 Python
python3读取MySQL-Front的MYSQL密码
2017/05/03 Python
Python实现的基于优先等级分配糖果问题算法示例
2018/04/25 Python
python匹配两个短语之间的字符实例
2018/12/25 Python
使用Python3内置文档高效学习以及官方中文文档
2019/05/19 Python
python爬虫 execjs安装配置及使用
2019/07/30 Python
Python+OpenCV实现将图像转换为二进制格式
2020/01/09 Python
python实现删除列表中某个元素的3种方法
2020/01/15 Python
Python开发之身份证验证库id_validator验证身份证号合法性及根据身份证号返回住址年龄等信息
2020/03/20 Python
keras中的loss、optimizer、metrics用法
2020/06/15 Python
利用scikitlearn画ROC曲线实例
2020/07/02 Python
以设计师精品品质提供快速时尚:Mostata
2019/05/10 全球购物
什么是事务?为什么需要事务?
2012/01/09 面试题
师范大学音乐表演专业求职信
2013/10/23 职场文书
关于运动会的口号
2014/06/07 职场文书
一份恶作剧的检讨书
2014/09/13 职场文书
大学运动会加油稿200字(5篇)
2014/09/27 职场文书
vue如何使用模拟的json数据查看效果
2022/03/31 Vue.js
Redis实现订单过期删除的方法步骤
2022/06/05 Redis