通过javascript将窗口设置为全屏(REAL全屏; F11function)
有几个关于这个的问题, 有人说这是不可能的,有人说这是可能的IE浏览器如Internet Explorer全屏模式? 我想知道一个通用的解决scheme和答案。
我正在build立一个照片库的网页,而画廊真正发挥出了不同的作用,当全屏观看(正如标题所说,我说的是真正的全屏幕,而不是酒吧和窗口铬等),我想放置一个button全屏。 (不,我不会在没有用户意图的情况下强行进行FS,我也讨厌这种“function”)。当通过用户发起的操作(例如button点击)启动时,Flash可能会出现,我想知道这样的东西也可用于JavaScript。 从逻辑上讲,它应该有一个类似于Flash / SL用户启动的全屏模式的机制。 如果没有适用于所有人的“通用”function,对于部分function(我的意思是支持一些浏览器 ,而不是设置窗口宽度/高度等),没有答案告诉设置窗口宽度/高度,我知道该怎么做,我不是在找)。
现在可以在最新版本的Chrome,Firefox和IE中使用(11)。
遵循Zuul在这个线程中的指针,我编辑了他的代码,包括IE11和全屏选项的选项在您的网页上的选项。
JS:
function toggleFullScreen(elem) { // ## The below if statement seems to work better ## if ((document.fullScreenElement && document.fullScreenElement !== null) || (document.msfullscreenElement && document.msfullscreenElement !== null) || (!document.mozFullScreen && !document.webkitIsFullScreen)) { if ((document.fullScreenElement !== undefined && document.fullScreenElement === null) || (document.msFullscreenElement !== undefined && document.msFullscreenElement === null) || (document.mozFullScreen !== undefined && !document.mozFullScreen) || (document.webkitIsFullScreen !== undefined && !document.webkitIsFullScreen)) { if (elem.requestFullScreen) { elem.requestFullScreen(); } else if (elem.mozRequestFullScreen) { elem.mozRequestFullScreen(); } else if (elem.webkitRequestFullScreen) { elem.webkitRequestFullScreen(Element.ALLOW_KEYBOARD_INPUT); } else if (elem.msRequestFullscreen) { elem.msRequestFullscreen(); } } else { if (document.cancelFullScreen) { document.cancelFullScreen(); } else if (document.mozCancelFullScreen) { document.mozCancelFullScreen(); } else if (document.webkitCancelFullScreen) { document.webkitCancelFullScreen(); } else if (document.msExitFullscreen) { document.msExitFullscreen(); } } }
HTML:
<input type="button" value="click to toggle fullscreen" onclick="toggleFullScreen(document.body)">
凡“document.body”是你所希望的任何元素。
另外请注意,尝试从控制台运行这些全屏命令似乎不适用于Chrome或IE。 虽然我在Firebug中取得了成功。
另外要注意的是这些“全屏”命令没有垂直滚动条,你需要在CSS中指定:
*:fullscreen *:-ms-fullscreen, *:-webkit-full-screen, *:-moz-full-screen { overflow: auto !important; }
对于IE来说,“!important”似乎是必要的
这是一个工作的例子 。
不可以, 旧版本的IE(≤6)允许,但是这个function被视为一个安全问题,所以没有现代的浏览器允许它。
你仍然可以调用 window.open(url,'','fullscreen=yes')
,它可以让你在那里达到90%,但是结果稍有不同:
- IE只打开一个标题栏和URL栏的窗口。 窗口大小可以填满整个屏幕,并覆盖Windows任务栏 。
- Mozilla也打开一个只有标题栏和URL栏的窗口。 但是,新窗口将inheritance打开窗口的尺寸。 如果开放窗口最大化,则新窗口最大化。 (不包括任务栏)
- Chrome也会打开一个只有标题栏和url栏的窗口。 新窗口inheritance了开放窗口的维度,但从未打开最大化 (即使开放窗口最大化)。
这与使用JavaScript所获得的结果差不多。 你的另一个select是在Flash中创build一些东西(呃!) ,或者只是让你的“全屏”buttonpopup一个说“按F11全屏显示”的灯箱,然后在window.resize
上隐藏灯箱,或者点击一个取消button在灯箱。
编辑:适当的全屏API ( 由Mozilla首次提出 ,后来作为W3C提案发布)已经由Webkit(Safari 5.1 + / Chrome 15 +)和Firefox(10+)实现。 这里简要的历史和使用示例。 请注意,IE10据称不支持API。
您可以使用签名的java applet来执行此操作,该applet有权运行自动化脚本来发出按键以进入全屏模式。 但是,这是一个彻头彻尾的黑客,除非你的用户不介意你的网站操纵他们的机器,否则不会很实用。
Chrome或Firefox不支持通过Java脚本进行全屏支持。 但是,你可以设法为MSIE。 但那也不是F11类的function。
即使chrome.exe -kiosk
也不以全屏模式打开页面。
原因是不build议强制用户以全屏模式打开您的应用程序。 如果这不是所有来自不同网站的popup窗口都将以全屏模式打开,您将最终closures所有这些。