Javascript 注入导航错误页面获取:错误:没有窗口匹配{“MatcheHost”:[“所有URL”gt;]}

Javascript 注入导航错误页面获取:错误:没有窗口匹配{“MatcheHost”:[“所有URL”gt;]},javascript,firefox,firefox-addon,firefox-addon-webextensions,Javascript,Firefox,Firefox Addon,Firefox Addon Webextensions,我正在尝试执行一个脚本,该脚本在指定的选项卡上显示绿色边框(按ID)。当请求的URL的响应为错误时,应执行脚本。问题是,当我从about:debug加载扩展时,我得到以下错误(在FF 53的浏览器控制台中): 后台脚本是test.js: console.log("-- inside js file --"); var target = "<all_urls>"; function logError(responseDetails) {

我正在尝试执行一个脚本,该脚本在指定的选项卡上显示绿色边框(按ID)。当请求的URL的响应为错误时,应执行脚本。问题是,当我从
about:debug
加载扩展时,我得到以下错误(在FF 53的浏览器控制台中):

后台脚本是
test.js

   console.log("-- inside js file --");
    var target = "<all_urls>"; 
    function logError(responseDetails) {    
          errorTab=responseDetails.tabId;
          console.log("response tab: "+errorTab);

    var makeItGreen = 'document.body.style.border = "5px solid green"';
    var executing = browser.tabs.executeScript(errorTab,{
    code: makeItGreen
    });
}//end function

browser.webRequest.onErrorOccurred.addListener(
  logError,
  {urls: [target],
  types: ["main_frame"]}
); 
console.log(“--in-js file--”);
var target=“”;
函数日志错误(响应详细信息){
errorTab=responseDetails.tabId;
日志(“响应选项卡:“+errorTab”);
var makeItGreen='document.body.style.border=“5px纯绿色”;
var executing=browser.tabs.executeScript(errorTab{
代码:makeItGreen
});
}//端函数
browser.webRequest.onerrorOccurrend.addListener(
日志错误,
{URL:[目标],
类型:[“主框架”]}
); 

您看到的错误:

Error: No window matching {"matchesHost":["<all_urls>"]}
我之所以知道这一点,是因为当我测试尝试加载URL时,最后一个
webNavigation.onDOMContentLoaded
事件:
http://www.exampleahdsafhd.com/
was:

webNavigation.onDOMContentLoaded->arg[0]=对象{
url:“关于:neterror?e=dnsNotFound&u=http%3A//www.exampleahdsafhd.com/&c=UTF-8&f=regular&d=Firefox%20can%E2%80%99t%20find%20www.exampleahdsafhd.com上的%20server%20,
时间戳:1497389662844,
frameId:0,
parentFrameId:-1,
塔比德:2,
windowId:3
}

错误页面是一个关于:页面,这意味着您将无法向其中注入脚本或CSS。这意味着你需要找到其他方法来实现你的愿望和/或调整你的愿望去做可能的事情。一种可能是导航到扩展插件中描述错误的页面。

谢谢<代码>一种可能是导航到扩展中描述错误的页面,您的意思是重定向页面?有效地,是的。但是,您不能直接从
webRequest.onerrorOccessed
处理程序重定向请求(也就是说,没有特殊的方法可以这样做,因为
onBeforeRequest
onHeadersReceived
处理程序可以这样做)。在这种情况下,“重定向”将是一个单独的导航,但是导航应该能够足够快地发生,这样用户就不会注意到他们在错误页面上的时间很短,或者至少用户不会注意到他们。如果我想重定向到扩展内的页面,但它包含javascript。允许吗?在中,在受限制的URL中:
javascript:url
data:url
,我不确定这两个URL是什么意思?我的意思是,页面在扩展文件中,但它包含内容脚本。这可能吗?@user6875880,您加载的扩展名中的任何HTML页面必须在HTML外部的文件中包含所有JavaScript(就像弹出窗口或选项页面一样)。它们不是内容脚本(您不能注入实际的内容脚本),但这些脚本可以从扩展中访问基于HTML的DOM和所有特权扩展API。
   console.log("-- inside js file --");
    var target = "<all_urls>"; 
    function logError(responseDetails) {    
          errorTab=responseDetails.tabId;
          console.log("response tab: "+errorTab);

    var makeItGreen = 'document.body.style.border = "5px solid green"';
    var executing = browser.tabs.executeScript(errorTab,{
    code: makeItGreen
    });
}//end function

browser.webRequest.onErrorOccurred.addListener(
  logError,
  {urls: [target],
  types: ["main_frame"]}
); 
Error: No window matching {"matchesHost":["<all_urls>"]}
about:neterror?e=dnsNotFound&u=[URL you were attempting to get to, but encoded as a query string]