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 相关文章推荐
用window.location.href实现刷新另个框架页面
Mar 07 Javascript
JavaScript修改css样式style
Apr 15 Javascript
FusionCharts图表显示双Y轴双(多)曲线
Nov 22 Javascript
基于javascript代码实现通过点击图片显示原图片
Nov 29 Javascript
JS实现的表头列头固定页面功能示例
Jan 10 Javascript
Vue.JS实现垂直方向展开、收缩不定高度模块的JS组件
Jun 19 Javascript
vue3.0 CLI - 2.6 - 组件的复用入门教程
Sep 14 Javascript
javascript实现导航栏分页效果
Jun 27 Javascript
vue.js实现只能输入数字的输入框
Oct 19 Javascript
javascript将扁平的数据转为树形结构的高效率算法
Feb 27 Javascript
解决vue自定义指令导致的内存泄漏问题
Aug 04 Javascript
Ajax实现局部刷新的方法实例
Mar 31 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 文件夹删除、php清除缓存程序
2009/08/25 PHP
PHP __autoload函数(自动载入类文件)的使用方法
2012/02/04 PHP
php几个预定义变量$_SERVER用法小结
2014/11/07 PHP
我也种棵OO树JXTree[js+css+xml]
2007/04/02 Javascript
javascript 按回车键相应按钮提交事件
2009/11/02 Javascript
JavaScript NaN和Infinity特殊值 [译]
2012/09/20 Javascript
web基于浏览器的本地存储方法应用
2012/11/27 Javascript
利用进制转换压缩数字函数分享
2014/01/02 Javascript
jquery实现鼠标拖动图片效果示例代码
2014/01/09 Javascript
将json对象转换为字符串的方法
2014/02/20 Javascript
JS设置网页图片vspace和hspace属性的方法
2015/04/01 Javascript
浅析js中substring和substr的方法
2015/11/09 Javascript
jQuery插件jquery-barcode实现条码打印的方法
2015/11/25 Javascript
Vue.js实战之Vuex的入门教程
2017/04/01 Javascript
js实现放大镜特效
2017/05/18 Javascript
详解Vue学习笔记入门篇之组件的内容分发(slot)
2017/07/17 Javascript
webpack构建vue项目的详细教程(配置篇)
2017/07/17 Javascript
JavaScript中toLocaleString()和toString()的区别实例分析
2018/08/14 Javascript
解决vuejs项目里css引用背景图片不能显示的问题
2018/09/13 Javascript
Vue指令v-for遍历输出JavaScript数组及json对象的常见方式小结
2019/02/11 Javascript
layui 解决富文本框form表单提交为空的问题
2019/10/26 Javascript
纯js+css实现仿移动端淘宝网站的弹出详情框功能
2019/12/29 Javascript
[02:02]特效爆炸!DOTA2珍宝之瓶待你开启
2018/08/21 DOTA
Python批量转换文件编码格式
2015/05/17 Python
Python的re模块正则表达式操作
2016/05/25 Python
视觉直观感受若干常用排序算法
2017/04/13 Python
python 画三维图像 曲面图和散点图的示例
2018/12/29 Python
python文件处理fileinput使用方法详解
2020/01/02 Python
python中threading开启关闭线程操作
2020/05/02 Python
Python实现钉钉/企业微信自动打卡的示例代码
2021/02/02 Python
Mio Skincare美国官网:身体紧致及孕期身体护理
2017/03/05 全球购物
如何写出高质量、高性能的MySQL查询
2014/11/17 面试题
厉行勤俭节约倡议书
2014/05/16 职场文书
电气工程及其自动化专业毕业生自荐信
2014/06/21 职场文书
新学期新寄语,献给新生们!
2019/11/15 职场文书
Android存储中最基本的文件存储方式
2022/04/30 Java/Android