`

JS实现全屏

    博客分类:
  • JS
阅读更多

这几天尽琢磨用JS实现全屏全屏了,折腾了好几天都没达到我要的效果,最后只能放弃了。虽说如此,折腾过程还是要贴贴的。

 

声明:所谓的全屏,就是在浏览器中按了F11的效果,什么菜单栏工具栏状态栏一律消失,就剩下“可视内容所在页面”占据整个屏幕。

 

一、通过调节window的宽和高实现全屏

var aw = screen.availWidth;
var ah = screen.availHeight;
window.moveTo(0, 0);
window.resizeTo(aw, ah);

缺点:这是屏幕最大化,效果为点了浏览器右上角“最大化”按钮, 页面铺满整个屏幕,菜单栏地址栏什么的该有还有,所以这不是全屏

优点:可以自动最大化

注意点:使用最大化,通常都是在打开页面的时候直接最大化,实现方式自然是页面加载的时候自动最大化,大家容易想到的无外乎是将以上代码放在body的onload()或者Jquery的$(function())方法中这样子已加载就可以看到最大化了。实则不然,onload()和$(function())的本质含义是页面加载完成后再执行,而我们的自动最大化可不是加载完成才最大化,而是先保证最大化然后加载数据。怎么调整呢?很简单,新建一个script标签,将以上代码拷贝其中并将该script标签放到所有的script标签之前,也就是将:

<script type="text/javascript">
	var aw = screen.availWidth;
	var ah = screen.availHeight;
	window.moveTo(0, 0);
	window.resizeTo(aw, ah);
</script>

放到所有的script标签之前。按到代码的执行顺序,加载完成这个效果真后才会加载页面数据。

 

二、使用ActiveXObject控件模拟F11的效果

var wsh = new ActiveXObject("WScript.Shell"); 
wsh.sendKeys("{F11}");

优点:可以实现全屏,且能自动全屏

缺点: 仅限IE系列,版本IE10以下版本,浏览器必须允许执行ActiveXObject控件,且将鼠标放到最顶端时浏览器的基本信息还是会出来也能放大缩小,再次按F11时会退出全屏

注意点:这种方法使用ActiveXObject控件,ActiveXObject控件有以下要求:

a、ActiveXObject只有IE系列才兼容,其他浏览器都不能用;

b、要想用ActiveXObject控件,需要设置浏览器的安全级别,如启用“对未标记为可安全执行脚本的ActiveX控件执行脚本”等;

c、即便启用ActiveXObject控件,每次加载该控件时都会弹框确认,且这种确认只能手动不能自动,若不允许执行ActiveXObject则该功能不能用。

d、IE版本越往上对ActiveXObject控件的支持越若,如IE6里面可以直接启动该控件,IE8中只能标记为“提示”否则会自动设为禁用,IE11中使用ActiveXObject根本没反应。

所以用这种方法可谓是一步一个劫啊!

 

三、使用window.open打开新的页面实现全屏

window.open()的第三个参数可以设置新的窗口菜单栏地址栏状态等的状态,也可以设置为全屏模式。

var x = screen.availWidth;
var y = screen.availHeight;
  
//打开新的窗口
window.open(url,"makeful",   'fullscreen=yes,channelmode=yes,titlebar=no,toolbar=no,scrollbars=auto,resizable=no,status=no,copyhistory=no,location=no,menubar=no,width='+x+',height='+y);
window.close();//关闭当前窗口

优点:可以实现全屏,且能自动全屏

缺点:必须打开一个新的窗口

a、若是在原来的窗口打开新的窗口,新的窗口菜单栏状态的状态与原窗口一致,该显示还是显示。打开成_blank窗口才能全屏。

b、打开新的窗口以后调用window.close()关闭原来老的窗口,老窗口可以关闭,但是每次都会弹出确认框让确认是否关闭选项卡,不允许关闭的话原来的窗口依旧开着,并且这个弹出框不能人为的禁掉不让弹出。光想想"打开一个程序需要开两个窗口"、"访问的是一个页面看结果确是在另一个页面"都觉得不太对头。

c、上面的测试是在Html页面进行的,若将html页面改成JSP页面发布到项目中,其全屏模式跟静态html看到的全屏模式不一样,html页面出来内容浏览器的其他信息都看不到,JSP页面中则还会地址栏(地址栏不可编辑)和地址栏以上的部分,可以手动放大缩小窗口。按理说这应该不算全屏吧。

 

四、使用fullScreen API实现全屏

//全屏
function fullScreen() { 
  var element= document.documentElement; //若要全屏页面中div,var element= document.getElementById("divID");
  //IE 10及以下ActiveXObject
  if (window.ActiveXObject)
  {
    var WsShell = new ActiveXObject('WScript.Shell') 
    WsShell.SendKeys('{F11}'); 
  }
  //HTML W3C 提议
  else if(element.requestFullScreen) {  
    element.requestFullScreen();  
  }
  //IE11
  else if(element.msRequestFullscreen) { 
    element.msRequestFullscreen();  
  }
  // Webkit (works in Safari5.1 and Chrome 15)
  else if(element.webkitRequestFullScreen ) {  
    element.webkitRequestFullScreen();  
  } 
  // Firefox (works in nightly)
  else if(element.mozRequestFullScreen) { 
    element.mozRequestFullScreen();  
  }  
}

//退出全屏
function fullExit(){
  var element= document.documentElement;//若要全屏页面中div,var element= document.getElementById("divID"); 
  //IE ActiveXObject
  if (window.ActiveXObject)
  {
    var WsShell = new ActiveXObject('WScript.Shell') 
    WsShell.SendKeys('{F11}'); 
  }
  //HTML5 W3C 提议
  else if(element.requestFullScreen) {  
    document.exitFullscreen();
  }
 //IE 11
  else if(element.msRequestFullscreen) {  
    document.msExitFullscreen();
  }
  // Webkit (works in Safari5.1 and Chrome 15)
  else if(element.webkitRequestFullScreen ) {  
    document.webkitCancelFullScreen(); 
  } 
  // Firefox (works in nightly)
  else if(element.mozRequestFullScreen) {  
    document.mozCancelFullScreen();  
  } 
}

优点:支持较多浏览器,且全屏效果好。它有使用ActiveXObject,因此IE10以下版本可以用,document.msExitFullscreen()可以支持IE10及以上版本,Chrome 15 / Firefox Nightly / Safari 5.1也支持FullScreen Javascript API,因此这个方法兼容性还是很不错的。

缺点:

a、因为使用ActiveXObject控件,因此自然会有使用ActiveXObject的缺点,上面有说过这里就不累述了

b、只能手动,不能自动。只能手动点击按钮或A标签来调用全屏和退出全屏的方法,模拟点击不起做用。因此也不能实现自动全屏的效果。

 

其他:这里记录一下测试用到的一些方法,如模拟点击、禁止右键。

//模拟点击
var fullscreenBtn = document.getElementById("btnFullScreen");
try{
	fullscreenBtn.fireEvent("onclick");
}catch(e){
	var  evt   =   document.createEvent('HTMLEvents');            
	evt.initEvent('click',true,true); 
	fullscreenBtn.dispatchEvent(evt);  
}

//禁止右键
document.oncontextmenu=function(e){
	return false; // 主页面不允许右键(兼容多浏览器)
}

 

参考:

1、狮子与硬币的“JS 全屏”:http://www.jianshu.com/p/624f808440ae
2、CSDN中关于“JS全屏”的讨论:http://bbs.csdn.net/topics/310127040
分享到:
评论

相关推荐

    JS实现全屏显示

    ### JS实现全屏显示 #### 知识点一:全屏API的基本概念 在Web开发中,有时我们需要让页面进入全屏模式以提供更好的用户体验或适应特定的应用场景(如视频播放、游戏等)。HTML5引入了一组标准API来支持全屏功能。...

    js 实现 全屏广告

    js 实现 全屏广告! 值得下载看看!资源免费,大家分享!!

    js 实现全屏飘雪花 两个

    简单易懂js 实现全屏飘...js 实现全屏飘雪花 两个js 实现全屏飘雪花 两个js 实现全屏飘雪花 两个js 实现全屏飘雪花 两个js 实现全屏飘雪花 两个js 实现全屏飘雪花 两个js 实现全屏飘雪花 两个js 实现全屏飘雪花 两个

    原生js实现全屏滚动

    在本教程中,我们将探讨如何使用原生JavaScript实现全屏滚动,无需依赖任何外部插件。 首先,我们需要创建一个HTML结构,包含多个全屏容器,每个容器代表一屏内容。例如: ```html &lt;div class="section"&gt;Section...

    基于javascript实现全屏漂移广告_.docx

    基于 JavaScript 实现全屏漂移广告 标题解释 本文实例分享了基于 JavaScript 实现全屏漂移广告的方法,通过使用 JavaScript 语言来实现广告的全屏漂移效果。 描述解释 本文档主要介绍了使用 JavaScript 实现全屏...

    JS实现全屏预览F11功能的示例代码

    在介绍如何用JavaScript实现全屏预览功能之前,我们首先需要了解浏览器提供的全屏API。全屏API允许网页内容以全屏模式显示,这样可以提供更加沉浸式的用户体验,全屏显示内容覆盖浏览器界面的所有其他内容。 ### ...

    iphone的safari浏览器中实现全屏浏览的方法

    在iPhone的Safari浏览器中实现全屏浏览可以让用户在查看网页内容时获得更沉浸式的体验。通常,Safari浏览器在浏览网页时会显示顶部的工具栏和底部的标签页栏,这占据了屏幕的一部分空间。全屏浏览则可以隐藏这些元素...

    javascript实现全屏页面滚动效果.docx

    JavaScript 实现全屏页面滚动效果是一项常见的网页交互技术,它能提供流畅的视觉体验和吸引用户的注意力。在本文中,我们将深入探讨如何使用 JavaScript 来创建这种效果。 首先,全屏页面滚动通常涉及到改变页面...

    基于anime.js实现全屏响应式图片视差旋转切换特效源码.zip

    这个压缩包"基于anime.js实现全屏响应式图片视差旋转切换特效源码.zip"包含了一个利用anime.js库来创建全屏响应式图片视差旋转切换特效的源代码。下面我们将详细探讨anime.js以及如何实现这样的特效。 首先,让我们...

    HTML+ CSS+JS 实现全屏图片平铺+Lightbox效果,可查看前后(不依赖外部库).zip

    资源介绍:HTML+ CSS+JS 实现全屏图片平铺+Lightbox效果,可查看前后(不依赖外部库) 资源特点:代码短小、代码容易阅读、重点注释、方便扩展、样式美观、采用CSS+JS实现。 适用人群:前端从业职,新手小白,有网站...

    js实现网页全屏效果

    本文将详细介绍如何使用JavaScript实现这一功能,同时结合jQuery库来简化操作。 首先,我们要理解浏览器的全屏API。在现代浏览器中,`Fullscreen API` 提供了进入和退出全屏模式的能力。这个API主要包含以下三个...

    js实现全屏飘动效果

    在JavaScript中实现全屏飘动效果,主要是通过CSS和JavaScript的结合来完成的。这个效果通常用于网页的广告展示或者动态背景,可以吸引用户的注意力,提升用户体验。下面将详细讲解如何实现这一效果。 首先,我们...

    js实现全屏漂浮广告移入光标停止移动

    JS全屏漂浮广告&lt;/title&gt;&lt;style type=”text/css”&gt;div#roll{width:100px;height:100px; background-color:#000; color:#fff; position:absolute;}&lt;/style&gt;&lt;/head&gt; &lt;body&gt;&lt;div&gt;&lt;div&gt;...

    全屏窗口javascript全屏

    本篇文章将深入探讨如何利用JavaScript实现全屏操作,并解决在过程中可能遇到的问题。 首先,我们需要了解浏览器提供的全屏API。在HTML5中,`Fullscreen API`被引入,允许网页元素进入或退出全屏模式。主要涉及到的...

    asp.net实现全屏显示加载时

    下面是一种使用JavaScript实现全屏显示的方法: ```javascript function requestFullScreen(element) { if (element.requestFullscreen) { element.requestFullscreen(); } else if (element....

    ❤爱情墙❤html5+css3+js 实现全屏七夕表白页面 (可自定义文字)

    ❤爱情墙❤html5+css3+js 实现全屏七夕表白页面 (可自定义文字) 博客地址:https://blog.csdn.net/qq316148300/article/details/111954088

    【JavaScript源代码】javascript实现全屏页面滚动效果.docx

    在本文中,我们将深入探讨如何使用JavaScript实现这样的效果,并分析提供的代码示例。 首先,我们要明白JavaScript是一种解释型的脚本语言,它主要用于增强网页的动态功能。DOM(Document Object Model)是HTML和...

    js全屏显示

    通过以上介绍,我们可以看出使用JavaScript实现全屏显示功能并不复杂,但是为了确保跨浏览器的兼容性和良好的用户体验,开发者需要关注细节并进行适当的调整。此外,随着Web技术的发展,未来全屏API的标准将会更加...

    用JS实现网页里的Flash全屏功能.rar

    综上所述,"用JS实现网页里的Flash全屏功能"这个主题涉及到JavaScript与Flash的交互,以及如何利用`fscommand`实现全屏切换。同时,也需要关注现代浏览器的全屏API和安全策略。随着技术的进步,开发者需要不断学习和...

Global site tag (gtag.js) - Google Analytics