【问题标题】:Controlling the "Oops! Chrome could not find ... " page?控制“糟糕!Chrome 找不到...”页面?
【发布时间】:2013-12-11 18:27:52
【问题描述】:

当您输入无效地址时,Chrome 会显示一个灰色页面,上面写着“糟糕!Google Chrome 找不到 X。您的意思是 Y?”

因为这不是 HTTP 页面,而是浏览器的内置内容之一,所以我无法将内容脚本放入其中,也无法控制它,所以我的扩展程序被冻结,直到用户手动转到另一个页面页面。

由于扩展程序应该能够自行控制浏览器,因此无论何时打开此页面,它都会自动返回到我确实可以访问内容脚本的页面,这一点非常重要,然后显示一条消息。

这不可能吗?

【问题讨论】:

    标签: google-chrome google-chrome-extension


    【解决方案1】:

    您可以使用chrome.webNavigation.onErrorOccurred 来检测此类错误,并根据需要重定向到其他页面。除非您有充分的理由这样做,否则我强烈不建议实施这样的功能,因为它可能会打破用户对浏览器行为方式的期望。

    不过,示例代码:

    chrome.webNavigation.onErrorOccurred(function(details) {
        if (details.frameId === 0) {
            // Main frame
            chrome.tabs.update(details.tabId, {
                url: chrome.runtime.getURL('error.html?error=' + encodeURIComponent(details.error))
            });
        }
    });
    

    【讨论】:

    • 我需要它,因为它用于语音控制扩展。当用户说“去 X.com”时,如果听错了,它会弹出 Oops 页面,语音控制将停止工作。对于截瘫用户来说,语音控制不能随时停止,或者必须有人来为他们重新启动。感谢您的出色回答。
    • @Aerovistae 您是否考虑过使用background pagebrowser action button
    • @Aerovistae 顺便说一句,“Oops not found”并不是唯一禁用内容脚本的页面。其他页面包括(但不限于):chrome:、about:、chrome-extension:。 data:、blob:、file:(当“允许访问文件 URL”被禁用时)和 Chrome 网上应用店中的任何页面。
    • 现在好像是chrome.webNavigation.onErrorOccurred.addListener
    【解决方案2】:

    根据the docs,扩展程序可以覆盖的唯一页面是:

    • 书签管理器
    • 历史
    • 新标签

    因此,扩展程序无法更改/控制/影响浏览器关于“糟糕!...”页面的行为。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-01-27
      • 2012-05-21
      • 1970-01-01
      • 2014-12-04
      • 2014-09-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多