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 相关文章推荐
jquery实现图片等比例缩放以及max-width在ie中不兼容解决
Mar 21 Javascript
js二级地域选择的实现方法
Jun 17 Javascript
js中一个函数获取另一个函数返回值问题探讨
Nov 21 Javascript
js中小数转换整数的方法
Jan 26 Javascript
直接在JS里创建JSON数据然后遍历使用
Jul 25 Javascript
JS简单操作select和dropdownlist实例
Nov 26 Javascript
angularJS提交表单(form)
Feb 09 Javascript
JavaScript实现的简单拖拽效果
Jun 01 Javascript
Vuejs第十三篇之组件——杂项
Sep 09 Javascript
Node.js  事件循环详解及实例
Aug 06 Javascript
浅谈webpack下的AOP式无侵入注入
Nov 12 Javascript
jquery实现加载更多&quot;转圈圈&quot;效果(示例代码)
Nov 09 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获取文件绝对路径的代码(上一级目录)
2011/05/29 PHP
Yii框架关联查询with用法分析
2014/12/02 PHP
WordPress中用于更新伪静态规则的PHP代码实例讲解
2015/12/18 PHP
PHP 接入支付宝即时到账功能
2016/09/18 PHP
浅谈PHP中如何实现Hook机制
2017/11/14 PHP
ThinkPHP框架实现的邮箱激活功能示例
2018/06/15 PHP
JavaScript进阶教程(第四课第一部分)
2007/04/05 Javascript
jquery异步循环获取功能实现代码
2010/09/19 Javascript
jQuery图片的展开和收缩实现代码
2013/04/16 Javascript
文本框(input)获取焦点(onfocus)时样式改变的示例代码
2014/01/10 Javascript
JavaScript函数的4种调用方法详解
2014/04/22 Javascript
JavaScript实现的GBK、UTF8字符串实际长度计算函数
2014/08/27 Javascript
jQuery实现360°全景拖动展示
2015/03/18 Javascript
JSON与XML优缺点对比分析
2015/07/17 Javascript
JavaScript实现自动消除按钮功能的方法
2015/08/05 Javascript
jQuery实现下滑菜单导航效果代码
2015/08/25 Javascript
AngularJS身份验证的方法
2016/02/17 Javascript
浅谈Javascript数据属性与访问器属性
2016/07/26 Javascript
简单理解js的prototype属性及使用
2016/12/07 Javascript
在 Typescript 中使用可被复用的 Vue Mixin功能
2018/04/17 Javascript
微信小程序云开发如何使用npm安装依赖
2019/05/18 Javascript
Vue中img的src是动态渲染时不显示的解决
2019/11/14 Javascript
vue-admin-template配置快捷导航的代码(标签导航栏)
2020/09/04 Javascript
ant design vue导航菜单与路由配置操作
2020/10/28 Javascript
python基于multiprocessing的多进程创建方法
2015/06/04 Python
Python从MP3文件获取id3的方法
2015/06/15 Python
深入浅出学习python装饰器
2017/09/29 Python
python基于递归解决背包问题详解
2019/07/03 Python
对python中不同模块(函数、类、变量)的调用详解
2019/07/16 Python
Selenium 安装和简单使用的实现
2020/12/04 Python
HTML5 localStorage使用总结
2017/02/22 HTML / CSS
美国羊皮公司:Overland
2018/01/15 全球购物
Ibatis的核心配置文件都有什么
2014/09/08 面试题
2014年综合治理工作总结
2014/11/20 职场文书
2015年房地产销售工作总结
2015/04/20 职场文书
六五普法先进个人主要事迹材料
2015/11/03 职场文书