javascript full screen 全屏显示页面元素的方法


Posted in Javascript onSeptember 27, 2013

一种最简单的方式,就是动态改变你想要全屏显示的部件的style,例如position变成absolute,height和width都设置成窗口大小,并且把背景颜色改成全白(为了遮住页面上其余的元素)。这样网页上就只能看到你要突出的部件了,视觉上就等同于全屏。同时利用javascript监听键盘事件,一旦用户按了ESc退出键,就恢复原来的样子。部分代码如下:

document.onkeydown = function (event) {
        var e = event || window.event || arguments.callee.caller.arguments[0];
        if (e && e.keyCode == 27) { //ESC键            $('.navbar-inner').fadeIn(100);
            var maintable = document.getElementById("holder");
            maintable.style.position = "relative";
            maintable.style.height = "100%";
            maintable.style.width = "100%";
            maintable = document.getElementById("main");
            maintable.style.height = "100%";
            maintable.style.width = "100%";
            maintable.style.left = 0 + "px";
            maintable.style.top = 0 + "px";
            resizePlots();
        }        
    };


fullScreenClick: function () {
$('.navbar-inner').fadeOut(100);
var maintable = document.getElementById("holder");
maintable.style.position = "absolute";
maintable.style.background = "#fff";
//maintable.style.zIndex = 5;
maintable.style.height = $(window).height() + "px";
maintable.style.width = $(window).width() + "px";
maintable.style.left = 0 + "px";
maintable.style.top = 0 + "px";
maintable = document.getElementById("main");
maintable.style.height = "90%";
maintable.style.width = "90%";
maintable.style.left = $(window).width() * 0.05 + "px";
maintable.style.top = $(window).height() * 0.02 + "px";
resizePlots();
},

但是这样做有个缺点,就是还需要手工按一下F11来达到真正的全屏。

下面有一种方法不用自己按F11的:

<!DOCTYPE html>
<html>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<body  >
<button id="btn" > full screen </button>
<div id="content" style="height:500px;width:500px;background:#fff">
<h1>欢迎微博互粉!</h1>
<h2>weibo.com/leavingseason</h2>
<p>相信音乐,相信五月天</p>
</div>
</body>
 <script language="JavaScript">  
document.getElementById("btn").onclick=function(){ 
 var elem = document.getElementById("content");  
requestFullScreen(elem); 
}; 
function requestFullScreen(element) {
    var requestMethod = element.requestFullScreen || element.webkitRequestFullScreen || element.mozRequestFullScreen || element.msRequestFullScreen;
    if (requestMethod) {  
        requestMethod.call(element);
    } else if (typeof window.ActiveXObject !== "undefined") {  
        var wscript = new ActiveXObject("WScript.Shell");
        if (wscript !== null) {
            wscript.SendKeys("{F11}");
        }
    }
} 
</script> 
</html>

这个可以支持大部分的浏览器。但是讨厌的IE还是不能支持HTML5的全屏功能,需要模拟按F11这个动作。读者可以在代码中看到。

还可以在代码里面退出全屏界面:

function cancelFullScreen(el) {
            var requestMethod = el.cancelFullScreen||el.webkitCancelFullScreen||el.mozCancelFullScreen||el.exitFullscreen;
            if (requestMethod) { // cancel full screen.
                requestMethod.call(el);
            } else if (typeof window.ActiveXObject !== "undefined") { // Older IE.
                var wscript = new ActiveXObject("WScript.Shell");
                if (wscript !== null) {
                    wscript.SendKeys("{F11}");
                }
            }
        }

关于全屏显示,我还是很好奇,那么视频网站是如何做到对IE等浏览器都兼容的全屏功能的。如果有谁知道的话,还请分享一下,感激不尽。

 updated (2013/09/22)

很多时候,想在全屏切换的时候做一些自定义的事情。可以如下绑定事件:

document.addEventListener("fullscreenchange", function () {
    doit();
}, false);document.addEventListener("mozfullscreenchange", function () {
    doit();
}, false);
document.addEventListener("webkitfullscreenchange", function () {
    doit();
}, false);

它会在每次进入或者退出全屏的时候,触发doit()操作。
Javascript 相关文章推荐
javascript 循环读取JSON数据的代码
Jul 17 Javascript
Extjs改变树节点的勾选状态点击按钮将复选框去掉
Nov 14 Javascript
JQuery弹出层示例可自定义
May 19 Javascript
JQuery Tips相关(1)----关于$.Ready()
Aug 14 Javascript
IE8下jQuery改变png图片透明度时出现的黑边
Aug 30 Javascript
javascript实现2016新年版日历
Jan 25 Javascript
Markdown与Bootstrap相结合实现图片自适应属性
May 04 Javascript
AngularJS指令与控制器之间的交互功能示例
Dec 14 Javascript
12个非常有用的JavaScript技巧
May 17 Javascript
使用vue2实现带地区编号和名称的省市县三级联动效果
Nov 05 Javascript
微信小程序云开发(数据库)详解
May 17 Javascript
vue实例的选项总结
Jun 09 Javascript
实现动画效果核心方式的js代码
Sep 27 #Javascript
javascript中call和apply方法浅谈
Sep 27 #Javascript
文本框回车提交与禁止提交示例
Sep 27 #Javascript
JQuery事件e参数的方法preventDefault()取消默认行为
Sep 26 #Javascript
原生js实现改变随意改变div属性style的名称和值的结果
Sep 26 #Javascript
js克隆对象、数组的常用方法介绍
Sep 26 #Javascript
js将当前时间格式转换成时间搓(自写)
Sep 26 #Javascript
You might like
微信随机生成红包金额算法php版
2016/07/21 PHP
gearman中worker常驻后台,导致MySQL server has gone away的解决方法
2020/02/27 PHP
JQuery上传插件Uploadify使用详解及错误处理
2010/04/27 Javascript
JavaScript的单例模式 (singleton in Javascript)
2010/06/11 Javascript
Javascript中浮点数相乘的一个解决方法
2014/06/03 Javascript
jQuery点击改变class并toggle及toggleClass()方法定义用法
2015/12/11 Javascript
angularjs 源码解析之scope
2016/08/22 Javascript
JavaScript基于对象去除数组重复项的方法
2016/10/09 Javascript
JS实现页面打印(整体、局部)
2017/08/18 Javascript
jQuery UI Draggable + Sortable 结合使用(实例讲解)
2017/09/07 jQuery
angular.js4使用 RxJS 处理多个 Http 请求
2017/09/23 Javascript
webpack实用小功能介绍
2018/01/02 Javascript
详解Vue.js自定义tipOnce指令用法实例
2018/12/19 Javascript
vue中$nextTick的用法讲解
2019/01/17 Javascript
Vue表情输入组件 微信face表情组件
2019/02/11 Javascript
浅谈js数组splice删除某个元素爬坑
2020/10/14 Javascript
Python中的ceil()方法使用教程
2015/05/14 Python
利用Python开发微信支付的注意事项
2016/08/19 Python
Python实现邮件的批量发送的示例代码
2018/01/23 Python
1 行 Python 代码快速实现 FTP 服务器
2018/01/25 Python
Python排序算法之选择排序定义与用法示例
2018/04/29 Python
python读写csv文件方法详细总结
2019/07/05 Python
python带参数打包exe及调用方式
2019/12/21 Python
可视化pytorch 模型中不同BN层的running mean曲线实例
2020/06/24 Python
Python和Bash结合在一起的方法
2020/11/13 Python
大学应届毕业生个人求职信
2013/09/23 职场文书
银行柜员应聘推荐信范文
2013/11/24 职场文书
万年牢教学反思
2014/02/15 职场文书
竞选学生会演讲稿
2014/04/25 职场文书
设计顾问服务计划书
2014/05/04 职场文书
产品发布会策划方案
2014/05/12 职场文书
多媒体教室标语
2014/06/26 职场文书
励志演讲稿600字
2014/08/21 职场文书
要账委托书范本
2014/09/15 职场文书
2014标准社保办理委托书
2014/10/06 职场文书
MySQL实例精讲单行函数以及字符数学日期流程控制
2021/10/15 MySQL