【问题标题】:Could a website force the browser to go into fullscreen mode?网站可以强制浏览器进入全屏模式吗?
【发布时间】:2010-09-18 16:58:51
【问题描述】:

我想进行一项心理研究,参与者必须查看大图像。

实验是在网络上完成的,因此是在浏览器窗口中完成的。是否可以告诉浏览器进入全屏模式,例如按下按钮?

我知道可以打开一个固定大小的弹出窗口。您认为这将是一个可行的替代方案吗?如果,最好的方法是什么?是否有优雅的方法来检测弹出窗口阻止程序,以回退并在原始浏览器窗口中运行研究。

主要担心的是这项研究的参与者不熟悉技术细节,不应该被他们打扰。

【问题讨论】:

  • 刚刚发现这个问题现在随着 HTML5 视频的引入有了新的关联。 HTML5 视频播放器无法提供真正的全屏功能。确实,这是一个安全问题。
  • 这个问题有很多重复:stackoverflow.com/questions/1125084/…

标签: javascript html browser window


【解决方案1】:

此功能对于支持全屏的移动浏览器更有趣。通过点击一个选项,大多数移动浏览器不会有全屏选项。您可以切换到全屏以获得一点应用感觉。

【讨论】:

    【解决方案2】:

    我搜索后发现了一些代码。

    function fullscreen() {
        var element = document.getElementById("content");
        if (element.requestFullScreen) {
            if (!document.fullScreen) {
                element.requestFullscreen();
                $(".fullscreen").attr('src',"img/icons/panel_resize_actual.png");
            } else {
                document.exitFullScreen();
                $(".fullscreen").attr('src',"img/icons/panel_resize.png");
            }
    
        } else if (element.mozRequestFullScreen) {
    
            if (!document.mozFullScreen) {
                element.mozRequestFullScreen();
                $(".fullscreen").attr('src',"img/icons/panel_resize_actual.png");
                google.maps.event.trigger(map, 'resize');
            } else {
                document.mozCancelFullScreen();
                $(".fullscreen").attr('src',"img/icons/panel_resize.png");
            }
    
        } else if (element.webkitRequestFullScreen) {
    
            if (!document.webkitIsFullScreen) {
                element.webkitRequestFullScreen();
                $(".fullscreen").attr('src',"img/icons/panel_resize_actual.png");
                google.maps.event.trigger(map, 'resize');
            } else {
                document.webkitCancelFullScreen();
                $(".fullscreen").attr('src',"img/icons/panel_resize.png");
            } 
        } 
    }
    

    它将使用 html5 api。我用jquery为它切换了一张特殊的图片。希望这会有所帮助。目前,我不知道你是否可以强制它,因为它被禁止出于安全考虑。

    【讨论】:

    • 是的,这是今天的正确答案。当我询问时,此功能不可用。 ;-) 感谢您花时间回答迟到的问题。你可能会得到一个徽章。
    • @Swen,有了webkitRequestFullScreen功能,我们只能让图片全屏显示。如果我希望通过单击按钮以全屏模式显示整个网站怎么办?
    • @Ng2-Fun 你可以让任何你想要的元素全屏显示。如果你不能用“body”或“document”来做,只需将整个页面包装在一个 DIV 中并使其全屏显示。我以前做过,只是不记得怎么做了。但!您必须这样做以响应单击或手势。您不能在页面加载、计时器等时执行此操作。只能通过用户响应。
    【解决方案3】:

    在 IE 上以全屏模式打开一个新窗口:

    <script>
    <!--
    window.open("page.html","fs","fullscreen,scrollbars")
    //-->
    </script> 
    

    在 page.html 上添加“关闭”链接可能是个好主意:

    <a href="#" onclick="window.close()">Close Window</a>
    

    【讨论】:

      【解决方案4】:

      要修改父窗口,请尝试以下操作:

      window.opener.location.href = '/confirmation/page.html';
      

      【讨论】:

        【解决方案5】:

        您可以告诉用户按 F11。在它旁边,放一个“为什么?”链接并解释为什么你觉得他们需要全屏模式。

        我不认为你可以强制浏览器全屏显示,事实上,如果你能做到这一点,我会对我的浏览器感到愤怒。它太具有侵略性了。甚至 Flash 也具有安全性,因此强制插件进入全屏需要事件源自用户交互。所以,如果它对你来说很重要,这可能是使用 Flash 插件的一个很好的理由,因为你可以将全屏调用附加到一个误导性的按钮上,上面写着“开始测验”(或其他)。

        但是,请不要那样做。直接与用户直接联系并告诉他们按 F11。

        编辑:我刚刚尝试了另一条评论中提供的示例代码,我很高兴地说 Firefox 会打开一个带有地址栏的最大化窗口,而不是全屏窗口。

        【讨论】:

        • 别担心,我想提供一个可选的“设置我全屏”按钮。很高兴知道 F11 适用于大多数浏览器。
        • @matt 这不再是真的。 Chrome 3 在 F11 上进入全屏模式。
        • 对于 Mac 电脑,类似于 Apple+Shift+F
        • 手机没有 F11!
        【解决方案6】:

        F11 使 IE 和 Firefox 进入全屏模式。我确信全屏是可能的,因为 YouTube 和其他视频流媒体网站可以使用 Flash,但我不知道如何使用 javascript。

        【讨论】:

          【解决方案7】:

          没有办法将当前窗口调整为全屏,但您可以全屏打开一个弹出窗口:

          <script type="text/javascript">
          <!--
          function popup(url) 
          {
           params  = 'width='+screen.width;
           params += ', height='+screen.height;
           params += ', top=0, left=0'
           params += ', fullscreen=yes';
          
           newwin=window.open(url,'windowname4', params);
           if (window.focus) {newwin.focus()}
           return false;
          }
          // -->
          </script>
          
          <a href="javascript: void(0)" 
             onclick="popup('popup.html')">Fullscreen popup window</a>
          

          【讨论】:

          • 谢谢,在成功加载弹出窗口时是否也可以轻松更改原始页面?这样用户最终不会开始两次学习..
          • 将回复视为另一个答案。
          • 这个答案在 2012 年是否仍然适用于浏览器功能的添加?
          • 我想是的。我就是这样做的。
          【解决方案8】:

          过去,我曾看到网站这样做。但是,由于它非常烦人并且通常被 pr0n 网站的广告使用,因此该技术可能会在最近的浏览器中被阻止。

          但我认为重要的一点是:它非常烦人,并且通常被 pr0n 网站的广告使用,因此您可能不想将自己关联到哪些此类东西,所以您最好只要求您的用户最大化他们的浏览器.

          【讨论】:

          • 对于这样的内部流程,我认为是有道理的。
          • 我只将它用于邀请参与者的研究,他们会事先得到指导。
          • 只要说明中特别提到:未经用户同意更改窗口大小(或用户特别设置的任何其他内容)通常不是好的做法。
          • 在这种情况下,提问者不是在运行一个通用网站,而是一个用于特定目的的网站。将其视为 Kiosk 模式/全屏应用程序。
          猜你喜欢
          • 2011-01-06
          • 2023-03-31
          • 2013-10-01
          • 2012-01-20
          • 2014-02-01
          • 2011-07-02
          • 1970-01-01
          • 2016-02-11
          • 1970-01-01
          相关资源
          最近更新 更多