当前位置: 首页 > 面试题库 >

JavaScript请求全屏显示不可靠

弘涛
2023-03-14
问题内容

我正在尝试使用JavaScript FullScreen API,并从此处使用针对当前非标准实现的解决方法:

可悲的是,它的行为非常不稳定。我只关心Chrome(使用v17),但是由于遇到问题,我在Firefox 10中做了一些测试以进行比较,结果相似。

下面的代码尝试将浏览器设置为全屏,有时可以,有时不能。它总是调用警报以表明它正在请求全屏显示。这是我发现的:

  • 通常设置为全屏。它可以进入一种状态,该状态将停止工作,但警报仍会发生,即它仍在请求全屏显示,但不起作用。
  • 如果从按键处理程序(document.onkeypress)调用它,则可以工作,但在页面加载(window.onload)上调用时,则不能工作。

我的代码如下:

function DoFullScreen() {

    var isInFullScreen = (document.fullScreenElement && document.fullScreenElement !==     null) ||    // alternative standard method  
            (document.mozFullScreen || document.webkitIsFullScreen);

    var docElm = document.documentElement;
    if (!isInFullScreen) {

        if (docElm.requestFullscreen) {
            docElm.requestFullscreen();
        }
        else if (docElm.mozRequestFullScreen) {
            docElm.mozRequestFullScreen();
            alert("Mozilla entering fullscreen!");
        }
        else if (docElm.webkitRequestFullScreen) {
            docElm.webkitRequestFullScreen();
            alert("Webkit entering fullscreen!");
        }
    }
}

问题答案:

requestFullscreen()由于安全原因(至少在Chrome中),无法自动调用。因此,只能通过用户操作来调用它,例如:

  • 单击(按钮,链接…)
  • 按键(按键,按键…)

并且如果您的文档包含在框架中:

  • allowfullscreen需要存在于<iframe>元素上*

  • W3规范:
    “ …为防止嵌入式内容进入全屏状态,只有通过allowfullscreenHTMLiframe元素的属性专门允许的嵌入式内容才能进入全屏状态。这可以防止不受信任的内容进入全屏状态。”



 类似资料:
  • 问题内容: 我有一个以全屏模式运行的应用程序,并且运行良好。现在,我需要添加一个简单的,未修饰的对话框,我遇到了麻烦。如果我 最大化 而不是全屏运行该应用程序,则对话框将按预期方式显示和运行。当我切换回全屏模式时,该对话框将不会显示。 该对话框扩展了JDialog,仅包含一个JSlider和几个按钮。它是未经装饰的, 不是模态的 。(我出于测试目的禁用了模式- 每次对话框阻止输入时强制退出应用程序

  • 描述 (Description) 您可以根据窗口的宽度和高度创建全屏模式。 例子 (Example) 以下示例演示了在Foundation中使用full screen modal - <!doctype html> <head> <meta charset = "utf-8" /> <meta http-equiv = "x-ua-compatible" conten

  • 问题内容: 从Android 8.0 Oreo java.lang.IllegalStateException中的通讯录中检索联系人时,我遇到了问题:仅全屏不透明活动可以请求定向 我正在尝试从电话通讯录中获取活动中的联系信息,它非常适合棒棒糖,棉花糖,牛轧糖等,但对于奥利奥这样的错误会给我带来这种错误,请帮助我。我的代码在这里。 演示代码:- 错误日志: 问题答案: 当目标sdk为28时,问题似乎

  • 在我的应用程序中,我将“compileSdkVersion”从25更改为27。我在android 8.0中发现了以下问题: 我找到了一个解决方案,可以将以下方法添加到活动中: 但是我在上面的错误日志中找不到相应的活动。有人遇到过这个问题吗?请帮帮我。

  • 我的问题很简单,我已经请求了JSONYouTubev3数据API,但是,我想显示从链接请求的数据:https://www.googleapis.com/youtube/v3/channels?part=statistics

  • 问题内容: 当您单击一个按钮时,我试图使JPanel进入全屏状态,而当您按Escape键时,则将其再次返回。 我设法使窗口全屏显示,但是由于添加组件的整个过程使它们从其他容器中删除,我最终得到了一个空白的JPanel。 我选择制作一个单独的JFrame来呈现全屏,其类如下(请注意,这是一个内部类,因此myPanel引用MyJFrame中已经存在的面板): 关于如何实现此目标还有其他聪明的主意吗?