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代码
Aug 13 Javascript
JavaScript window.setTimeout() 的详细用法
Nov 04 Javascript
Extjs3.0 checkboxGroup 动态添加item实现思路
Aug 14 Javascript
JQuery中Bind()事件用法分析
May 05 Javascript
基于Bootstrap重置输入框内容按钮插件
May 12 Javascript
AngularJs Understanding the Model Component
Sep 02 Javascript
Centos6.8下Node.js安装教程
May 12 Javascript
js实现QQ面板拖拽效果(慕课网DOM事件探秘)(全)
Sep 19 Javascript
prototype.js简单实现ajax功能示例
Oct 18 Javascript
JS实现数组简单去重及数组根据对象中的元素去重操作示例
Jan 05 Javascript
jquery ajax 请求小技巧实例分析
Nov 11 jQuery
如何使用webpack打包一个库library的方法步骤
Dec 18 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获取新浪微博数据API实例
2013/11/12 PHP
PHP中CURL的CURLOPT_POSTFIELDS参数使用细节
2014/03/17 PHP
Yii中render和renderPartial的区别
2014/09/03 PHP
php绘制圆形的方法
2015/01/24 PHP
php上传大文件失败的原因及应对策略
2015/10/20 PHP
在WordPress中安装使用视频播放器插件Hana Flv Player
2016/01/04 PHP
Laravel 批量更新多条数据的示例
2017/11/27 PHP
PHP获取文件扩展名的常用方法小结【五种方式】
2018/04/27 PHP
JQuery实现动态表格点击按钮表格增加一行
2014/08/24 Javascript
jQuery实现图片与文字描述左右滑动自动切换的方法
2015/07/27 Javascript
一个超简单的jQuery回调函数例子(分享)
2016/08/08 Javascript
js HTML5 Canvas绘制转盘抽奖
2020/09/13 Javascript
手机移动端实现 jquery和HTML5 Canvas的幸运大奖盘特效
2016/12/06 Javascript
js实现导航栏中英文切换效果
2017/01/16 Javascript
Javascript中click与blur事件的顺序详析
2017/04/25 Javascript
JavaScript实现的浏览器下载文件的方法
2017/08/09 Javascript
详解vue-meta如何让你更优雅的管理头部标签
2018/01/18 Javascript
小试SVG之新手小白入门教程
2019/01/08 Javascript
Antd的table组件表格的序号自增操作
2020/10/27 Javascript
[48:44]2014 DOTA2国际邀请赛中国区预选赛5.21 TongFu VS HGT
2014/05/22 DOTA
Python程序设计入门(5)类的使用简介
2014/06/16 Python
Python内建模块struct实例详解
2018/02/02 Python
浅谈pytorch和Numpy的区别以及相互转换方法
2018/07/26 Python
对python的unittest架构公共参数token提取方法详解
2018/12/17 Python
Python读取csv文件分隔符设置方法
2019/01/14 Python
使用Django连接Mysql数据库步骤
2019/01/15 Python
浅析Python3中的对象垃圾收集机制
2019/06/06 Python
python爬虫 urllib模块反爬虫机制UA详解
2019/08/20 Python
用HTML5实现网站在windows8中贴靠的方法
2013/04/21 HTML / CSS
Canvas系列之滤镜效果
2019/02/12 HTML / CSS
C#如何判断当前用户是否输入某个域
2015/12/07 面试题
毕业求职自荐信格式是什么
2013/11/19 职场文书
2014年公司庆元旦活动方案
2014/03/05 职场文书
小学三年级学生评语
2014/04/22 职场文书
出生医学证明书
2014/09/15 职场文书
大学副班长竞选稿
2015/11/21 职场文书