【发布时间】:2015-06-23 06:12:21
【问题描述】:
我在 Google Chrome 扩展程序中搞乱通信,并使用以下指南:https://developer.chrome.com/extensions/messaging
它曾经可以工作,但我遇到了一个错误:
响应 tabs.query 时出错:TypeError: Cannot read property 'id' 未定义的
我比较了我的代码和 Google Chrome 代码,但我似乎无法找到我的代码产生该错误的原因:
chrome.tabs.query({active: true, currentWindow: true}, function(tabs) {
chrome.tabs.sendMessage(tabs[1].id, {fen: request.needMove}, function(response) {
//console.log(response.farewell);
});
});
这是我发送到的地方:
chrome.runtime.onMessage.addListener(
function(request, sender, sendResponse) {
console.log("recv FEN : " + FEN);
FEN = request.fen;
setCookie("FEN_SET", "true" , 1);
setFEN(FEN);
});
我无法修复该错误,无论我尝试什么,它都保持不变。 “无法读取未定义的属性”意味着据我了解“标签”是未定义的,但我不明白为什么它在 Google 示例中有效,而在这里却没有。
另一个问题:
如果我试图将它发送到 tabs[1],这是否意味着它是第二个位置的标签,还是我解释错了?
【问题讨论】:
-
在不熟悉平台的情况下,报错表示
tabs[1]未定义,此时调试脚本,看看tabs的实际内容是什么。 -
说:"tabs: Array[0]" 但是如果你看一个谷歌的例子,它完全一样,我复制并粘贴它以满足我的需要
-
确保您在浏览器中至少打开了两个标签页
-
我还有更多,我的扩展需要两页...
-
如果 tabs 是 Array[0] 则
chrome.tabs.query({active: true, currentWindow: true},...)返回一个空数组。尝试扩大您的查询范围,使其返回您正在寻找的所有选项卡。
标签: javascript jquery google-chrome google-chrome-extension communication