Google chrome extension 执行官的不稳定行为描述:“;无法访问chrome://URL";在…上http://www.imdb.com/list
我正在执行一些。。。特定的URL。 它在大多数情况下工作正常,但有时不行。然后我用F5重新加载页面,同样,它在大多数情况下运行良好。 在事件页面中,我侦听onDOMContentLoadedGoogle chrome extension 执行官的不稳定行为描述:“;无法访问chrome://URL";在…上http://www.imdb.com/list,google-chrome-extension,Google Chrome Extension,我正在执行一些。。。特定的URL。 它在大多数情况下工作正常,但有时不行。然后我用F5重新加载页面,同样,它在大多数情况下运行良好。 在事件页面中,我侦听onDOMContentLoaded chrome.webNavigation.onDOMContentLoaded.addListener(listener, {'url': urlFilter}); 听众听得很好 function listener(tab){ t=tab; chrome.tabs.executeScrip
chrome.webNavigation.onDOMContentLoaded.addListener(listener, {'url': urlFilter});
听众听得很好
function listener(tab){
t=tab;
chrome.tabs.executeScript(tab.id, {file: 'elementoWeb 2.1.js'}, function(resultado){
if(chrome.runtime.lastError)
console.log('Ejecutando elementoWeb.js, chrome.runtime.lasterror: ', chrome.runtime.lastError, '\nTab: ', t);
});
chrome.tabs.executeScript(tab.id, {file: 'imdbListaCs.js'} , function(resultado){
if(chrome.runtime.lastError)
console.log('Ejecutando imdbListaCs.js, chrome.runtime.lasterror: ', chrome.runtime.lastError, '\nTab: ', t);
});
}
当它失败时,有两个类似这样的控制台日志,每次执行尝试一个:
Ejecutando elementoWeb.js, chrome.runtime.lasterror: Object {message: "Cannot access a chrome:// URL"}
Tab: Object {frameId: 0, processId: 320, tabId: 405, timeStamp: 1421159075402.253, url: "http://www.imdb.com/list/......"}
frameId: 0
processId: 320
tabId: 405
timeStamp: 1421159075402.253
url: "http://www.imdb.com/list/......"
__proto__: Object
(我缩短了imdb的URL)
选项卡405上有imdb.com页面。不是chrome://url.
有时错误消息会有所不同:
Cannot access contents of url "chrome-devtools://devtools/bundled/devtools.html?&dockSide=undocked&toolbarColor=rgba(223,223,223,1)&textColor=rgba(0,0,0,1)". Extension manifest must request permission to access this host.
我没有激活任何devtools的实验
有人有同样的奇怪问题吗?chrome.webNavigation.onDOMContentLoaded事件不会得到一个,而是一个包含导航信息的对象。查看(或查看打印到控制台的对象!),它显示选项卡的ID在
tabId
属性中提供
在代码中,您读取参数的一个不存在的属性(因此未定义
),并将其传递给。由于缺少选项卡ID,executeScript
默认为当前窗口的活动选项卡。当在不同的窗口或选项卡上触发导航时,内容脚本将插入错误的选项卡。如果您无法访问该选项卡(例如,因为它是chrome://newtab
),Chrome拒绝执行脚本。如果您正在查看devtools窗口,那么您将得到一个关于该窗口的错误(尽管不再是错误)
要解决问题,请将函数更改为
function listener(details) { // changed "tab" to "details"
chrome.tabs.executeScript(details.tabId, // (was "tab.id")
什么是
urlFilter
?您是否检查了后台页面控制台中的任何错误?非常感谢!即使犯了那个错误,我也不知道它为什么起作用,但现在我不在乎了。实际上,应用您的建议,问题仍然存在,但这次我可以检测到listener有时被调用为空参数,我不知道为什么,这导致了错误。现在我从一开始就检查它。