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中的void运算符语法及使用介绍
Mar 10 Javascript
js的onload事件及初始化按钮事件示例代码
Sep 25 Javascript
jquery事件preventDefault()方法用法实例
Jan 16 Javascript
js获取鼠标位置实例详解
Dec 09 Javascript
JavaScript将DOM事件处理程序封装为event.js 出现的低级错误问题
Aug 03 Javascript
jQuery Validate 数组 全部验证问题
Jan 12 Javascript
vue.js 使用v-if v-else发现没有执行解决办法
May 15 Javascript
Vue仿今日头条实例详解
Feb 06 Javascript
JavaScript继承的特性与实践应用深入详解
Dec 30 Javascript
Angular PWA使用的Demo示例
Jan 31 Javascript
浅析vue中的nextTick
Dec 28 Vue.js
JS的深浅复制详细
Oct 16 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 生成文字png图片的代码
2011/04/17 PHP
浅谈web上存漏洞及原理分析、防范方法(文件名检测漏洞)
2013/06/29 PHP
编写PHP程序检查字符串中的中文字符个数的实例分享
2016/03/17 PHP
yii2.0整合阿里云oss删除单个文件的方法
2017/09/19 PHP
php打开本地exe程序,js打开本地exe应用程序,并传递相关参数方法
2018/02/06 PHP
JSON 和 JavaScript eval使用说明
2010/06/13 Javascript
IE本地存储userdata的一个bug说明
2010/07/01 Javascript
javascript中的parseInt和parseFloat区别
2013/07/12 Javascript
javascript中createElement的两种创建方式
2015/05/14 Javascript
无刷新上传文件并返回自定义值
2015/06/11 Javascript
Angular懒加载机制刷新后无法回退的快速解决方法
2016/08/30 Javascript
jQuery css() 方法动态修改CSS属性
2016/09/25 Javascript
jquery使用EasyUI Tree异步加载JSON数据(生成树)
2017/02/11 Javascript
ajax +NodeJS 实现图片上传实例
2017/06/06 NodeJs
简单实现js放大镜效果
2017/07/24 Javascript
微信小程序搜索功能(附:小程序前端+PHP后端)
2019/02/28 Javascript
js中值引用和地址引用实例分析
2019/06/21 Javascript
Vue项目中Api的组织和返回数据处理的操作
2019/11/04 Javascript
vue从零实现一个消息通知组件的方法详解
2020/03/16 Javascript
JS数据类型判断的几种常用方法
2020/07/07 Javascript
Python中操作MySQL入门实例
2015/02/08 Python
Python计时相关操作详解【time,datetime】
2017/05/26 Python
pycharm下打开、执行并调试scrapy爬虫程序的方法
2017/11/29 Python
详谈python3中用for循环删除列表中元素的坑
2018/04/19 Python
Python批量生成特定尺寸图片及图画任意文字的实例
2019/01/30 Python
Python常用库大全及简要说明
2020/01/17 Python
python pip如何手动安装二进制包
2020/09/30 Python
最新Python idle下载、安装与使用教程图文详解
2020/11/28 Python
纯HTML5+CSS3制作生日蛋糕(代码易懂)
2016/11/16 HTML / CSS
世界排名第一的运动鞋市场:Flight Club
2020/01/03 全球购物
财经学院自荐信范文
2014/02/02 职场文书
学校百日安全生产活动总结
2014/07/05 职场文书
ktv好的活动方案
2014/08/17 职场文书
老舍《猫》教学反思
2016/02/17 职场文书
接触艺术对孩子学习思维有益
2019/08/06 职场文书
MySql统计函数COUNT的具体使用详解
2022/08/14 MySQL