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 DataSet数据源处理代码
Mar 29 Javascript
通过jquery还原含有rowspan、colspan的table的实现方法
Feb 10 Javascript
Ajax同步与异步传输的示例代码
Nov 21 Javascript
js的hasownproperty使用示例
Mar 02 Javascript
js中的事件捕捉模型与冒泡模型实例分析
Jan 10 Javascript
jquery判断对象是否为空并遍历对象的简单实例
Jul 26 Javascript
angularJs关于指令的一些冷门属性详解
Oct 24 Javascript
Reactjs实现通用分页组件的实例代码
Jan 19 Javascript
vue router动态路由下让每个子路由都是独立组件的解决方案
Apr 24 Javascript
ES6基础之字符串和函数的拓展详解
Aug 22 Javascript
jQuery实现全选按钮
Jan 01 jQuery
vue 实现上传组件
May 31 Vue.js
实现动画效果核心方式的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
短波收音机简介
2021/03/01 无线电
openPNE常用方法分享
2011/11/29 PHP
php 对输入信息的进行安全过滤的函数代码
2012/06/29 PHP
thinkphp实现数组分页示例
2014/04/13 PHP
php+ajax 文件上传代码实例
2019/03/18 PHP
ExtJS 2.2.1的grid控件在ie6中的显示问题
2009/05/04 Javascript
三种检测iPhone/iPad设备方向的方法
2014/04/23 Javascript
js四舍五入数学函数round使用实例
2014/05/09 Javascript
JavaScript中的Math.LOG2E属性使用详解
2015/06/14 Javascript
jQuery判断邮箱格式对错实例代码讲解
2017/04/12 jQuery
JavaScript初学者必看“new”
2017/06/12 Javascript
vue中各组件之间传递数据的方法示例
2017/07/27 Javascript
WebStorm ES6 语法支持设置&amp;babel使用及自动编译(详解)
2017/09/08 Javascript
一个Java程序猿眼中的前后端分离以及Vue.js入门(推荐)
2019/04/19 Javascript
在layui中使用form表单监听ajax异步验证注册的实例
2019/09/03 Javascript
ES6 Object.assign()的用法及其使用
2020/01/18 Javascript
[42:35]2018DOTA2亚洲邀请赛3月30日 小组赛A组 VG VS OpTic
2018/03/31 DOTA
用python实现批量重命名文件的代码
2012/05/25 Python
Pandas 合并多个Dataframe(merge,concat)的方法
2018/06/08 Python
tensor和numpy的互相转换的实现示例
2019/08/02 Python
tensorflow之自定义神经网络层实例
2020/02/07 Python
基于Python的一个自动录入表格的小程序
2020/08/05 Python
美国美妆网站:B-Glowing
2016/10/12 全球购物
法国创作个性化T恤衫和其他定制产品平台:Tostadora
2018/04/08 全球购物
英国莱斯特松木橡木家具网上商店:Choice Furniture Superstore
2019/07/05 全球购物
HolidayLettings英国:预订最好的度假公寓、别墅和自助式住宿
2019/08/27 全球购物
档案检查欢迎词
2014/01/13 职场文书
大学军训感言1500字
2014/03/09 职场文书
班班通校本培训方案
2014/03/12 职场文书
施工安全标语
2014/06/07 职场文书
村党建工作汇报材料
2014/11/02 职场文书
村级干部党员公开承诺事项
2015/05/04 职场文书
2015年公司行政后勤工作总结
2015/05/20 职场文书
会计主管竞聘书
2015/09/15 职场文书
《追风筝的人》:人心中的成见是座大山,但请不忘初心
2019/11/15 职场文书
Python自然语言处理之切分算法详解
2021/04/25 Python