【发布时间】:2014-12-14 06:08:16
【问题描述】:
我需要创建一个 chrome 扩展来捕获当前可见选项卡并在新选项卡中打开它。我使用以下代码:
send.js
function openNextPage(imagesrc) {
chrome.tabs.create({url: "newScreen.html"},function(tab){
chrome.runtime.sendMessage({someParam: imagesrc},function(response){console.log(response);});
}
);
}
在 newScreen.html 中我包含了 receive.js,如下所示:
window.addEventListener("load",function(){
console.log('contents Loaded');
chrome.runtime.onMessage.addListener(function(request,sender,response) {
console.log(request.someParam);
});
});
问题是,一旦创建了新标签(第一个 newScreen.html )我可以看到 Contents Loaded 消息,但看不到 imagesrc。可能是因为 onMessage.addEventListener 稍后执行(在 sendMessage 之后)。
但是,如果我再次单击我的扩展程序并打开第二个 newScreen.html ,则之前的 newScreen.html 会收到消息并打印出来。如果我打开第三个选项卡,则第一个和第二个选项卡会再次收到消息。问题是 sendMessage 甚至在添加 onMessageListener 之前执行。我将 TimeOut 用于 sendMessage 但徒劳无功。帮帮我!
【问题讨论】:
标签: javascript google-chrome google-chrome-extension sendmessage