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分析、压缩工具 JavaScript Analyser
Nov 30 Javascript
JQUERY复选框CHECKBOX全选,取消全选
Aug 30 Javascript
两种WEB下的模态对话框 (asp.net或js的分别实现)
Dec 02 Javascript
JS 删除字符串最后一个字符的实现代码
Feb 20 Javascript
JS案例分享之金额小写转大写
May 15 Javascript
javascript prototype原型详解(比较基础)
Dec 26 Javascript
js+canvas实现动态吃豆人效果
Mar 22 Javascript
JS获取日期的方法实例【昨天,今天,明天,前n天,后n天的日期】
Sep 28 Javascript
浅谈ES6 模板字符串的具体使用方法
Nov 07 Javascript
微信小程序视图控件与bindtap之间的问题的解决
Apr 08 Javascript
JS Ajax请求会话过期处理问题解决方法分析
Nov 16 Javascript
Vue CLI中模式与环境变量的深入详解
May 30 Vue.js
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中this,self,parent的区别详解
2013/06/08 PHP
利用curl抓取远程页面内容的示例代码
2013/07/23 PHP
深入理解PHP变量的值类型和引用类型
2015/10/21 PHP
Yii统计不同类型邮箱数量的方法
2016/10/18 PHP
laravel ORM关联关系中的 with和whereHas用法
2019/10/16 PHP
仿jQuery的siblings效果的js代码
2011/08/09 Javascript
JavaScript创建对象的写法
2013/08/29 Javascript
JS在可编辑的div中的光标位置插入内容的方法
2014/11/20 Javascript
node.js中实现同步操作的3种实现方法
2014/12/05 Javascript
Eclipse配置Javascript开发环境图文教程
2015/01/29 Javascript
js实现仿京东2级菜单效果(带延时功能)
2015/08/27 Javascript
微信小程序  modal弹框组件详解
2016/10/27 Javascript
javascript ASCII和Hex互转的实现方法
2016/12/27 Javascript
javascript 闭包详解及简单实例应用
2016/12/31 Javascript
angular+ionic返回上一页并刷新页面
2017/08/08 Javascript
JS实现面向对象继承的5种方式分析
2018/07/21 Javascript
对vue2.0中.vue文件页面跳转之.$router.push的用法详解
2018/08/24 Javascript
[02:51]DOTA2 2015国际邀请赛中国区预选赛第一日战报
2015/05/27 DOTA
Python实现脚本锁功能(同时只能执行一个脚本)
2017/05/10 Python
深入理解Python中的super()方法
2017/11/20 Python
python+matplotlib绘制饼图散点图实例代码
2018/01/20 Python
python书籍信息爬虫实例
2018/03/19 Python
Python拼接微信好友头像大图的实现方法
2018/08/01 Python
在python3.9下如何安装scrapy的方法
2021/02/03 Python
倩碧美国官网:Clinique美国
2016/07/20 全球购物
serialVersionUID具有什么样的特征
2014/02/20 面试题
售后专员岗位职责
2013/12/08 职场文书
甲方资料员岗位职责
2013/12/13 职场文书
行政专员工作职责
2013/12/22 职场文书
小学生演讲稿
2014/01/12 职场文书
团组织关系介绍信
2014/01/12 职场文书
优秀学生干部主要事迹材料
2015/11/04 职场文书
selenium.webdriver中add_argument方法常用参数表
2021/04/08 Python
Pytorch中TensorBoard及torchsummary的使用详解
2021/05/12 Python
解决ObjectMapper.convertValue() 遇到的一些问题
2021/06/30 Java/Android
Redis特殊数据类型bitmap位图
2022/06/01 Redis