【问题标题】:Why won't window.location.href work on error pages?为什么 window.location.href 不能在错误页面上工作?
【发布时间】:2016-11-13 12:44:48
【问题描述】:

我正在开发一个 Google Chrome 扩展程序,如果用户访问一个不存在的网站,例如 thiswebsitedoesnotexist.com,我希望该扩展程序将他们重定向到我专门设置的另一个页面。我不是在谈论提供 404 错误的网站。我的意思是找不到 DNS 服务器地址的网站,因此 Google Chrome 会为您提供标准错误页面。

我尝试使用window.location.href = *link*,但这并没有改变网页。我怎样才能解决这个问题?提前致谢。

【问题讨论】:

    标签: javascript html google-chrome google-chrome-extension


    【解决方案1】:

    为什么 window.location.href 不能在错误页面上工作?

    因为事实上,尽管地址栏显示了预期的地址,但您仍会看到一个带有 data: 内部错误页面 URL 的文档。您可以使用 DevTools 通过检查错误页面中的 window.location 来验证这一点。

    data: URLs are not scriptable by Chrome extensions:没有主机权限允许向其中注入内容脚本。

    因此,尝试以编程方式注入更改window.location.href(或更改console.log)的内容脚本将由于缺少权限而失败,并且清单中的内容脚本match patterns 将不适用。

    我该如何解决这个问题?

    您可以使用背景页面中的chrome.tabs.update 导航离开错误页面。

    要检测后台页面中的此类错误,最合适的方法可能是使用chrome.webNavigation API,但也可以使用chrome.webRequest API(注意过滤器,并且需要广泛的权限)。两者都将提供tabId 来执行此操作。

    【讨论】:

    • 谢谢!这真的很有帮助(比那个斯图尔特人更有帮助)。我有第二个问题。我从后台页面调用console.log,但它似乎没有执行!您对此有解决方案吗?
    猜你喜欢
    • 1970-01-01
    • 2015-09-13
    • 1970-01-01
    • 1970-01-01
    • 2011-04-25
    • 2017-04-14
    • 1970-01-01
    • 2011-04-12
    • 1970-01-01
    相关资源
    最近更新 更多