Chrome:运行时.onmessage的事件处理程序错误
Chrome: Error in event handler for runtime.onMessage
我试图返回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"权限。
相关文章:
- keyup事件处理程序更改焦点不适用于快速键入
- 提示使用服务器端事件处理程序激活JavaScript
- 将事件处理程序绑定到任何可能的事件
- 正在将事件处理程序添加到不存在的类
- 在循环中附加事件处理程序时出现浏览器性能问题
- 在同一个javascript事件处理程序中调用不同的函数
- 有没有一种方法可以让内联事件处理程序在元素创建后立即执行
- 检查事件处理程序参数
- 实现延迟的jquery更改事件处理程序
- 如何使用Node.js在JavaScript模块文件之间使用事件处理程序
- 如何使jQuery的“bind”或“on”事件处理程序幂等
- 带有参数的Javascript事件处理程序
- Jquery事件处理程序仅适用于匿名函数
- 如何从另一个处理程序内部取消JavaScript事件处理程序函数的执行
- 如何在jQuery事件处理程序中存储和重用超时
- 如何向onClick事件处理程序传递一个接受参数的函数,并且仍然将该函数绑定到组件's”;这个“;上下文
- 异步处理所有事件处理程序的方法
- jsplumb中的Click事件处理程序丢失“;这个“;对象
- 构造函数中的事件处理程序与构造函数外的事件处理函数的行为不同
- 如何在事件处理程序的回调中防止Default