打开调试工具时,我从扩展程序中收到警告/错误(以下所有代码均正常运行,但会引发此错误):


  未捕获的TypeError:无法读取未定义的属性“ onUpdated”


在下面的代码中,我试图获取浏览器的当前选项卡URL。 (这是一个background.js脚本)

chrome.tabs.onUpdated.addListener(function(tabId,changeInfo,tab) {
    chrome.tabs.getSelected(null,function(tab) {
        var tablink = tab.url;
        console.log("Website: " + tablink);
    });
});


上面的脚本是我的后台脚本,从清单中调用。

"background": {
    "scripts": ["background.js"]
},


我的问题是,为什么在代码正常工作时会引发错误?错误显示在镶边的“调试/检查元素”中。如何从调试中删除所谓的“错误”?

编辑
使用从内容脚本到后台脚本的“ whoami”调用后,我在后台脚本上遇到以下错误。

providing tab information background.js:3Error in event handler for runtime.onMessage: Cannot read property 'url' of undefinedStack trace: TypeError: Cannot read property 'url' of undefined at chrome-extension://hejlnkjmnpomhknnbfjdfnablcmkloid/background.js:4:41 at Function.target.(anonymous function) (extensions::SafeBuiltins:19:14) at EventImpl.dispatchToListener (extensions::event_bindings:397:22) at Function.target.(anonymous function) (extensions::SafeBuiltins:19:14) at Event.publicClass.(anonymous function) [as dispatchToListener] (extensions::utils:89:26) at EventImpl.dispatch_ (extensions::event_bindings:379:35) at EventImpl.dispatch (extensions::event_bindings:403:17) at Function.target.(anonymous function) (extensions::SafeBuiltins:19:14) at Event.publicClass.(anonymous function) [as dispatch] (extensions::utils:89:26) at messageListener (extensions::messaging:190:29) extensions::uncaught_exception_handler:9

最佳答案

我不直接知道为什么您的代码不起作用,但是:

首先,现在不赞成使用getSelected,请参考文档https://developer.chrome.com/extensions/tabs#method-getSelected并使用tabs.query {active:true};)

其次,这是一种“歧义性”,在您编写“ tab.url”时使用“ tab”变量,它是getSelected还是Updated事件中的变量? (如果是最后一个,则getSelected是无用的)

关于javascript - Chrome扩展程序:尝试获取选项卡URL时,Background.js“未捕获的TypeError”,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24763691/

10-09 21:58