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 相关文章推荐
IE中radio 或checkbox的checked属性初始状态下不能选中显示问题
Jul 25 Javascript
JS兼容浏览器的导出Excel(CSV)文件的方法
May 03 Javascript
jQuery菜单插件用法实例
Jul 25 Javascript
学习Javascript面向对象编程之封装
Feb 23 Javascript
微信小程序 video组件详解
Oct 25 Javascript
Flask中获取小程序Request数据的两种方法
May 12 Javascript
认识less和webstrom的less配置方法
Aug 02 Javascript
在Vue项目中取消ESLint代码检测的步骤讲解
Jan 27 Javascript
浅谈js中的bind
Mar 18 Javascript
如何使用JavaScript实现栈与队列
Jun 24 Javascript
在vue中利用v-html按分号将文本换行的例子
Nov 14 Javascript
JSON stringify方法原理及实例解析
Oct 23 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支持页面回退的两种方法[转]
2007/02/14 PHP
php 文件缓存函数
2011/10/08 PHP
php+ajax实现图片文件上传功能实例
2014/06/17 PHP
ThinkPHP3.1新特性之查询条件预处理简介
2014/06/19 PHP
Yii实现自动加载类地图的方法
2015/04/01 PHP
PHP中把对象转换为关联数组代码分享
2015/04/09 PHP
PHP 与 UTF-8 的最佳实践详细介绍
2017/01/04 PHP
PHP 获取客户端 IP 地址的方法实例代码
2018/11/11 PHP
JavaScript中获取样式的原生方法小结
2014/10/08 Javascript
jQuery实现的超酷苹果风格图标滑出菜单效果代码
2015/09/16 Javascript
jQuery+ajax+asp.net获取Json值的方法
2016/06/08 Javascript
BootStrap 下拉菜单点击之后不会出现下拉菜单(下拉菜单不弹出)的解决方案
2016/12/14 Javascript
JavaScript中数组Array.sort()排序方法详解
2017/03/01 Javascript
jQuery控制元素隐藏和显示
2017/03/03 Javascript
ES6新特性四:变量的解构赋值实例
2017/04/21 Javascript
iscroll-probe实现下拉刷新和下拉加载效果
2017/06/28 Javascript
JavaScript实现短暂提示框功能
2018/04/04 Javascript
详解npm 配置项registry修改为淘宝镜像
2018/09/07 Javascript
express.js中间件说明详解
2019/03/19 Javascript
JavaScript获取某一天所在的星期
2019/09/05 Javascript
[52:07]完美世界DOTA2联赛PWL S3 LBZS vs access 第二场 12.10
2020/12/13 DOTA
Python进阶篇之字典操作总结
2016/11/16 Python
解决Scrapy安装错误:Microsoft Visual C++ 14.0 is required...
2017/10/01 Python
微信跳一跳辅助python代码实现
2018/01/05 Python
Python使用Pickle库实现读写序列操作示例
2018/06/15 Python
对python3中pathlib库的Path类的使用详解
2018/10/14 Python
python使用udp实现聊天器功能
2018/12/10 Python
tensorflow pb to tflite 精度下降详解
2020/05/25 Python
2分钟教你实现环形/扇形菜单(基础版)
2020/01/15 HTML / CSS
商场拾金不昧表扬信
2014/01/13 职场文书
先进集体获奖感言
2014/02/13 职场文书
优秀护士获奖感言
2014/02/20 职场文书
技术合作协议书范本
2014/04/18 职场文书
学雷锋月活动总结
2014/04/25 职场文书
医院深入开展党的群众路线教育实践活动实施方案
2014/08/27 职场文书
库房管理员岗位职责
2015/02/12 职场文书