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 学习笔记(九)call和apply方法
Jan 11 Javascript
基于JavaScript实现继承机制之调用call()与apply()的方法详解
May 07 Javascript
深入理解javaScript中的事件驱动
May 21 Javascript
详解AngularJS过滤器的使用
Mar 11 Javascript
Bootstrap页面布局基础知识全面解析
Jun 13 Javascript
使用JS动态显示文本
Sep 09 Javascript
浅谈Vue 数据响应式原理
May 07 Javascript
详解使用vue-admin-template的优化历程
May 20 Javascript
webpack的CSS加载器的使用
Sep 11 Javascript
JavaScript设计模式之门面模式原理与实现方法分析
Mar 09 Javascript
微信小程序实现列表滚动头部吸顶的示例代码
Jul 12 Javascript
Vue实现随机验证码功能
Dec 29 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
咖啡磨器 如何选购一台适合家用的意式磨豆机
2021/03/05 新手入门
PHP的mysqli_sqlstate()函数讲解
2019/01/23 PHP
php生成短网址/短链接原理和用法实例分析
2020/05/29 PHP
执行iframe中的javascript方法
2008/10/07 Javascript
JavaScript 三种不同位置代码的写法
2009/10/25 Javascript
Javascript Cookie读写删除操作的函数
2010/03/02 Javascript
jquery 元素相对定位代码
2010/10/15 Javascript
Js保留小数点的4种效果实现代码分享
2014/04/12 Javascript
AngularJs表单验证实例详解
2016/05/30 Javascript
JavaScript知识点总结(六)之JavaScript判断变量数据类型
2016/05/31 Javascript
jQuery鼠标移动图片上实现放大效果
2017/06/25 jQuery
微信小程序实现点击文字页面跳转功能【附源码下载】
2017/12/12 Javascript
vue移动端实现下拉刷新
2018/04/22 Javascript
实现Vue的markdown文档可以在线运行的方法示例
2018/12/11 Javascript
angular 实现下拉列表组件的示例代码
2019/03/09 Javascript
vue双向绑定及观察者模式详解
2019/03/19 Javascript
微信小程序封装自定义弹窗的实现代码
2019/05/08 Javascript
Vue+Node实现商品列表的分页、排序、筛选,添加购物车功能详解
2019/12/07 Javascript
[01:23:24]DOTA2-DPC中国联赛 正赛 PSG.LGD vs Elephant BO3 第三场 2月7日
2021/03/11 DOTA
Python中AND、OR的一个使用小技巧
2015/02/18 Python
Python实现求最大公约数及判断素数的方法
2015/05/26 Python
构建Python包的五个简单准则简介
2015/06/15 Python
Python单体模式的几种常见实现方法详解
2017/07/28 Python
Win10下python 2.7.13 安装配置方法图文教程
2018/09/18 Python
python程序快速缩进多行代码方法总结
2019/06/23 Python
pandas实现excel中的数据透视表和Vlookup函数功能代码
2020/02/14 Python
python 实现aes256加密
2020/11/27 Python
HTML5实现应用程序缓存(Application Cache)
2020/06/16 HTML / CSS
精细化工应届生求职信
2013/11/17 职场文书
写给女生的道歉信
2014/01/08 职场文书
市场安全管理制度
2014/01/26 职场文书
员工培训协议书
2014/09/15 职场文书
2014年办公室人员工作总结
2014/12/09 职场文书
2015年新农合工作总结
2015/03/30 职场文书
演讲比赛主持词
2015/06/29 职场文书
2016年五一促销广告语
2016/01/28 职场文书