Javascript webNavigation.onDOMContentLoaded URL筛选器与DNS错误URL不匹配
参考我上一个问题的答案。简而言之:当导航Javascript webNavigation.onDOMContentLoaded URL筛选器与DNS错误URL不匹配,javascript,firefox-addon,firefox-addon-webextensions,Javascript,Firefox Addon,Firefox Addon Webextensions,参考我上一个问题的答案。简而言之:当导航webRequest中发生错误(例如DNS查找错误)时,选项卡导航到的URL可在webNavigation.onDOMContentLoaded事件的URL属性中找到,用于导航到显示的错误页面,但实际URL会显示出来(即,about:neterrorURL)无法通过其他方式获得 我想按照答案的方法获取错误页面URL。我编写了以下示例代码,在浏览器中收到错误页面,但当我使用webNavigation时。onDOMContentLoaded要获取错误的实际UR
webRequest
中发生错误(例如DNS查找错误)时,选项卡导航到的URL可在webNavigation.onDOMContentLoaded
事件的URL
属性中找到,用于导航到显示的错误页面,但实际URL会显示出来(即,about:neterror
URL)无法通过其他方式获得
我想按照答案的方法获取错误页面URL。我编写了以下示例代码,在浏览器中收到错误页面,但当我使用webNavigation时。onDOMContentLoaded
要获取错误的实际URL,代码根本不返回任何内容。请注意,如果没有错误,代码将返回正确的URL
下面是我的示例(test.js):
以及manifest.json
{
“清单版本”:2,
“名称”:“测试”
“版本”:“1.0”,
“背景”:{
“脚本”:[“test.js”]
},
“权限”:[
"",
“活动标签”,
“标签”,
“存储”,
“网络请求”,
“网络导航”
]
}
您的代码无法按您希望的方式工作,因为您正在查找的URL不包含作为主机一部分的pagedoesnotexist.com
。发生错误的URL是主机的一部分,而不是主机的一部分
不幸的是,使用键queryContains
似乎有错误(我仍在研究我看到的行为)。我发现对代码的以下修改是有效的:
var errorDomain='pagedoesnotexist.com';
变量过滤器={
网址:
[
//{urlpeffix:'about:neterror'}//有效
//以下URL匹配中的简单正则表达式具有
//在匹配时产生误报的可能性
//域。换句话说,其他一些错误URL可能匹配
//但是,一个更复杂的RegExp
//防止此类假阳性匹配取决于
//您希望用于匹配的确切标准。对于
//实例,是否要匹配子域?仅HTTP?
//HTTP和HTTPS?任何协议(如FTP)?
{urlMatches:'^about:neterror\\?.*+errorDomain+'.*}//有效。
//{urlMatches:'.*pagedoesnotexist.com.*'}//有效
//{urlMatches:'.*page.*'}//有效
//{queryContains:'pagedoesnotexist.com'}//不起作用(可能是Firefox错误)
//{queryContains:'page'}//不工作(可能是Firefox错误)
]
}
函数logOnDOMContentLoaded(详细信息){
log(“onDOMContentLoaded:+details.url”);
}
browser.webNavigation.onDOMContentLoaded.addListener(logOnDOMContentLoaded,filter);
var filter = {
url:
[
{hostContains: "pagedoesnotexist.com"}
]
}
function logOnDOMContentLoaded(details) {
console.log("onDOMContentLoaded: " + details.url);
}
browser.webNavigation.onDOMContentLoaded.addListener(logOnDOMContentLoaded, filter);
{
"manifest_version": 2,
"name": "test
"version": "1.0",
"background": {
"scripts": ["test.js"]
},
"permissions": [
"<all_urls>",
"activeTab",
"tabs",
"storage",
"webRequest",
"webNavigation"
]
}