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 动态数据下的锚点错位问题解决方法
Dec 24 Javascript
JQuery 自定义CircleAnimation,Animate方法学习笔记
Jul 10 Javascript
判断window.onload是否多次使用的方法
Sep 21 Javascript
js获取当前日期时间及其它操作汇总
Apr 17 Javascript
Node.js模块封装及使用方法
Mar 06 Javascript
手机端点击图片放大特效PhotoSwipe.js插件实现
Aug 24 Javascript
AngularJs 动态加载模块和依赖
Sep 15 Javascript
使用Vuex实现一个笔记应用的方法
Mar 13 Javascript
微信小程序实现时间预约功能
Nov 27 Javascript
浅谈express.js框架中间件(middleware)
Apr 07 Javascript
详解vue 路由跳转四种方式 (带参数)
Apr 28 Javascript
微信小程序动画组件使用解析,类似vue,且更强大
Aug 01 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
在mysql数据库原有字段后增加新内容
2009/11/26 PHP
PHP 实现explort() 功能的详解
2013/06/20 PHP
php 下载保存文件保存到本地的两种实现方法
2013/08/12 PHP
PHP实现上传文件并存进数据库的方法
2015/07/16 PHP
PHP 裁剪图片
2021/03/09 PHP
javascript 精粹笔记
2010/05/09 Javascript
JS TextArea字符串长度限制代码集合
2012/10/31 Javascript
ie与ff下的event事件使用介绍
2013/11/25 Javascript
Jquery在指定DIV加载HTML示例代码
2014/02/17 Javascript
js的延迟执行问题分析
2014/06/23 Javascript
使用plupload自定义参数实现多文件上传
2016/07/19 Javascript
AngularJS使用ng-repeat和ng-if实现数据的删选显示效果示例【适用于表单数据的显示】
2016/12/13 Javascript
简单的JS控制button颜色随点击更改的实现方法
2017/04/17 Javascript
详解使用nodeJs安装Vue-cli
2017/05/17 NodeJs
利用JS对iframe父子(内外)页面进行操作的方法教程
2017/06/15 Javascript
vue实现条件叠加搜索的解决方法
2019/05/28 Javascript
JS前端知识点总结之页面加载事件,数组操作,DOM节点操作,循环和分支
2019/07/04 Javascript
详解如何在Vue项目中发送jsonp请求
2019/10/25 Javascript
[01:18:33]Secret vs VGJ.S Supermajor小组赛C组 BO3 第一场 6.3
2018/06/04 DOTA
Python将json文件写入ES数据库的方法
2019/04/10 Python
python中web框架的自定义创建
2019/09/08 Python
使用pickle存储数据dump 和 load实例讲解
2019/12/30 Python
泰国折扣酒店预订:Hotels2Thailand
2018/03/20 全球购物
澳大利亚手表品牌:Time IV Change
2018/10/06 全球购物
街头时尚在线:JESSICABUURMAN
2019/06/16 全球购物
如何保障Web服务器安全
2014/05/05 面试题
Overload和Override的区别
2012/09/02 面试题
医院护士的求职信范文
2013/12/26 职场文书
四风问题自查报告剖析材料
2014/02/08 职场文书
职业生涯规划书范文
2014/03/10 职场文书
雷锋式好少年事迹材料
2014/08/17 职场文书
期末个人总结范文
2015/02/13 职场文书
2015年服务员工作总结
2015/04/08 职场文书
学校计划生育责任书
2015/05/09 职场文书
2015年第31个教师节致辞
2015/07/31 职场文书
公司客户答谢酒会祝酒词
2015/08/11 职场文书