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 相关文章推荐
jQuery的实现原理的模拟代码 -5 Ajax
Aug 07 Javascript
js 延迟加载 改变JS的位置加快网页加载速度
Dec 11 Javascript
jquery禁止输入数字以外的字符的示例(纯数字验证码)
Apr 10 Javascript
Javascript基础教程之数据类型 (字符串 String)
Jan 18 Javascript
原生js实现addClass,removeClass,hasClass方法
Apr 27 Javascript
Angular指令封装jQuery日期时间插件datetimepicker实现双向绑定示例
Jan 22 Javascript
JavaScript使用readAsDataURL读取图像文件
May 10 Javascript
React Native之TextInput组件解析示例
Aug 22 Javascript
在vue2.0中引用element-ui组件库的方法
Jun 21 Javascript
微信小程序实现指定显示行数多余文字去掉用省略号代替
Jul 25 Javascript
angular4中*ngFor不能对返回来的对象进行循环的解决方法
Sep 12 Javascript
vue 子组件watch监听不到prop的解决
Aug 09 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
jQuery:节点(插入,复制,替换,删除)操作
2013/03/04 Javascript
JS注册/移除事件处理程序(ExtJS应用程序设计实战)
2013/05/07 Javascript
jquery showModelDialog的使用方法示例详解
2013/11/19 Javascript
jquery实现页面图片等比例放大缩小功能
2014/02/12 Javascript
Document.location.href和.replace的区别示例介绍
2014/03/04 Javascript
关于img的href和src取变量及赋值的方法
2014/04/28 Javascript
14款NodeJS Web框架推荐
2014/07/11 NodeJs
优化RequireJS项目的相关技巧总结
2015/07/01 Javascript
JS将滑动门改为选项卡(需鼠标点击)的实现方法
2015/09/27 Javascript
JS实现的自定义显示加载等待图片插件(loading.gif)
2016/06/17 Javascript
原生js实现无缝轮播图效果
2017/01/11 Javascript
canvas知识总结
2017/01/25 Javascript
详解如何使用 vue-cli 开发多页应用
2017/12/16 Javascript
js保留两位小数方法总结
2018/01/31 Javascript
解决vue打包之后静态资源图片失效的问题
2018/02/21 Javascript
微信小程序实现订单倒计时
2020/11/01 Javascript
微信小程序实现侧边分类栏
2019/10/21 Javascript
python基础教程之实现石头剪刀布游戏示例
2014/02/11 Python
解读Python中degrees()方法的使用
2015/05/18 Python
Python文本特征抽取与向量化算法学习
2017/12/22 Python
selenium+python自动化测试之鼠标和键盘事件
2019/01/23 Python
python3.7 sys模块的具体使用
2019/07/22 Python
python的re模块使用方法详解
2019/07/26 Python
Django如何实现上传图片功能
2019/08/16 Python
如何在scrapy中捕获并处理各种异常
2020/09/28 Python
Python离线安装各种库及pip的方法
2020/11/28 Python
websocket+sockjs+stompjs详解及实例代码
2018/11/30 HTML / CSS
Spartoo比利时:欧洲时尚购物网站
2017/12/06 全球购物
如何实现一个自定义类的序列化
2012/05/22 面试题
摄影实习自我鉴定
2013/09/20 职场文书
档案接收函范文
2014/01/10 职场文书
运动会铅球比赛加油稿
2014/09/26 职场文书
专业技术职务聘任证明
2015/03/02 职场文书
手把手教你从零开始react+antd搭建项目
2021/06/03 Javascript
使用 Apache Dubbo 实现远程通信(微服务架构)
2022/02/12 Servers
Smart 2 车辆代号 HC11 全新谍照曝光
2022/04/21 数码科技