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 相关文章推荐
JS版的date函数(和PHP的date函数一样)
May 12 Javascript
js 操作符汇总
Nov 08 Javascript
开源的javascript项目Kissy介绍
Nov 28 Javascript
js图片模糊切换显示特效的方法
Feb 17 Javascript
JQuery中基础过滤选择器用法实例分析
May 18 Javascript
Node.js插件安装图文教程
May 06 Javascript
jquery设置表单元素为不可用的简单代码
Jul 04 Javascript
浅谈js中用$(#ID)来作为选择器的问题(id重复的时候)
Feb 14 Javascript
详解vuelidate 对于vueJs2.0的验证解决方案
Mar 09 Javascript
详解React-Router中Url参数改变页面不刷新的解决办法
May 08 Javascript
如何基于JavaScript判断图片是否加载完成
Dec 28 Javascript
jQuery ajax - getScript() 方法和getJSON方法
May 14 jQuery
实现动画效果核心方式的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生成静态页
2006/11/25 PHP
ecshop 批量上传(加入自定义属性)
2012/03/20 PHP
PHP文件管理之实现网盘及压缩包的功能操作
2017/09/20 PHP
PHP基于自定义函数生成笛卡尔积的方法示例
2017/09/30 PHP
PHP判断一个变量是否为整数、正整数的方法示例
2019/09/11 PHP
jquery 选择器部分整理
2009/10/28 Javascript
jQuery淡入淡出元素让其效果更为生动
2014/09/01 Javascript
Nodejs极简入门教程(二):定时器
2014/10/25 NodeJs
javascript实现的淘宝旅行通用日历组件用法实例
2015/08/03 Javascript
javascript获取网页各种高宽及位置的方法总结
2016/07/27 Javascript
完美解决jQuery 鼠标快速滑过后,会执行多次滑出的问题
2016/12/08 Javascript
jQuery学习笔记之入门
2016/12/14 Javascript
jquery 正整数数字校验正则表达式
2017/01/10 Javascript
ReactNative之FlatList的具体使用方法
2017/11/29 Javascript
three.js搭建室内场景教程
2018/12/30 Javascript
vue项目中使用vue-i18n报错的解决方法
2019/01/13 Javascript
JS使用数组实现的队列功能示例
2019/03/04 Javascript
详解jenkins自动化部署vue
2019/05/14 Javascript
Vue 自定义指令实现一键 Copy功能
2019/09/16 Javascript
[03:14]2014DOTA2西雅图国际邀请赛 EG战队巡礼
2014/07/07 DOTA
[03:00]《DAC最前线》之欧美新秀VS老将
2015/02/01 DOTA
使用python开发vim插件及心得分享
2014/11/04 Python
python中numpy包使用教程之数组和相关操作详解
2017/07/30 Python
Python Xml文件添加字节属性的方法
2018/03/31 Python
Django Python 获取请求头信息Content-Range的方法
2019/08/06 Python
Django 在iframe里跳转顶层url的例子
2019/08/21 Python
python3 deque 双向队列创建与使用方法分析
2020/03/24 Python
Python xlrd模块导入过程及常用操作
2020/06/10 Python
详解Python直接赋值,深拷贝和浅拷贝
2020/07/09 Python
如何在python中判断变量的类型
2020/07/29 Python
Expedia韩国官网:亚洲发展最快的在线旅游门户网站
2018/02/26 全球购物
运动会入场解说词300字
2014/01/25 职场文书
护理专业学生职业生涯规划范文
2014/03/11 职场文书
2015年社区中秋节活动总结
2015/03/23 职场文书
何玥事迹观后感
2015/06/16 职场文书
2016年社区六一儿童节活动总结
2016/04/06 职场文书