我正在开发Google Chrome扩展程序,如果用户访问的网站不存在,例如thiswebsitedoesnotexist.com,我希望扩展程序将其重定向到我专门设置的其他网页。我不是在谈论给出404错误的网站。我指的是无法找到DNS服务器地址的网站,因此Google Chrome会为您提供标准错误页面。
我尝试使用window.location.href = *link*
,但这并没有改变网页。我怎么能绕过这个?提前谢谢。
答案 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
来执行此操作。