为什么win.tocation.href会在错误页面上运行?

时间:2016-07-11 14:12:56

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

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

我尝试使用window.location.href = *link*,但这并没有改变网页。我怎么能绕过这个?提前谢谢。

1 个答案:

答案 0 :(得分:0)

  

为什么win.tocation.href会在错误页面上运行?

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

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

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

  

我怎样才能解决这个问题?

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

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