Chrome:运行时.onmessage的事件处理程序错误

Chrome: Error in event handler for runtime.onMessage

本文关键字:事件处理 程序 错误 onmessage 运行时 Chrome      更新时间:2023-09-26

我试图返回Chrome扩展内的所有窗口实例,但我得到:

运行时事件处理程序出错。onMessage:错误:窗体窗体窗体。gettall()的调用不匹配定义窗口。gettall(可选对象getInfo,函数回调)

我已经将我的应用程序剥离到最低限度,以下是我得到错误消息时的实际设置。这样做的目的是,当我按下空格键时,chrome.windows.getAll()被调用,并在后台控制台中显示一些东西。在错误之前,我确实在控制台中获得"Message received"。

谁知道我做错了什么,甚至错误意味着什么?我已经在底部留下了准确的错误信息

我的Chrome版本是:33.0.1750.152


manifest.json

{
    "manifest_version": 2,
    "name":         "Alt Tilde",
    "version":      "0.0.1",
    "background": {
        "scripts":  ["js/bg.js"]
    },
    "content_scripts": [{
        "matches":  ["<all_urls>"],
        "js":       ["js/content.js"]
    }]
}
js/content.js

document.addEventListener('keydown', function(e){
    if(e.keyCode == 32)
        chrome.runtime.sendMessage({command: 'switch-window'})
})
js/bg.js

chrome.runtime.onMessage.addListener(function(){
    console.log('Message received')
    console.log(chrome.windows.getAll())
})

完整错误信息

Error in event handler for runtime.onMessage: Error: Invocation of form windows.getAll() doesn't match definition windows.getAll(optional object getInfo, function callback)
    at Object.normalizeArgumentsAndValidate (extensions::schemaUtils:113:11)
    at Object.<anonymous> (extensions::binding:307:30)
    at chrome-extension://aijclfleiopkccfielfjknhgpajnclah/js/bg.js:2:32
    at Function.target.(anonymous function) (extensions::SafeBuiltins:19:14)
    at Event.dispatchToListener (extensions::event_bindings:394:22)
    at Event.dispatch_ (extensions::event_bindings:378:27)
    at Event.dispatch (extensions::event_bindings:400:17)
    at messageListener (extensions::messaging:192:31)
    at Function.target.(anonymous function) (extensions::SafeBuiltins:19:14)
    at Event.dispatchToListener (extensions::event_bindings:394:22) extensions::event_bindings:382
Event.dispatch_ extensions::event_bindings:382
Event.dispatch extensions::event_bindings:400
messageListener extensions::messaging:192
Event.dispatchToListener extensions::event_bindings:394
Event.dispatch_ extensions::event_bindings:378
Event.dispatch extensions::event_bindings:400
dispatchOnMessage extensions::messaging:307

如果你想获得所有的选项卡信息,你需要定义一个回调。

试试这个:

chrome.windows.getAll({populate:true},function(wins){
  wins.forEach(function(win){
    win.tabs.forEach(function(tab){
      console.log(tab.url);
    });
  });
});

如果您想获取标签信息,请记住在manifest中添加"tabs"权限。