Chrome扩展程序,新创建的标签的内容脚本消息仅适用于警报

时间:2014-02-06 14:09:04

标签: javascript google-chrome google-chrome-extension

我正在创建一个Chrome扩展程序,该扩展程序从当前标签中获取网址并将其放入新打开的标签中的字段中。 新选项卡中的字段似乎只有在发送消息之前有警报时才会填充。可能是因为异步性,我如何在创建选项卡的回调函数中发送sendMessage。

这是我的background.js:

function sendMessage(msg) {
    chrome.tabs.query({active: true, currentWindow: true}, function(tabs) {
      chrome.tabs.sendMessage(tabs[0].id, msg);
    });
}

chrome.browserAction.onClicked.addListener(function() {
    chrome.tabs.getSelected(null, function(tab) {
        var tabURL = tab.url;

        chrome.tabs.create({url: "https://..<url>.."}, function(tab) {
            alert(''); //<- it only seems to work with this alert in it.
            sendMessage(tabURL);
        });
    });
});

我的content.js:

chrome.runtime.onMessage.addListener(
    function(request, sender) {
        document.getElementById('field').value = request;
});

1 个答案:

答案 0 :(得分:1)

找到解决方案,感谢亚伯拉罕:

将tabURL设为全局变量:

var tabURL = '';

从chrome.tabs.create中移除了回调函数:

chrome.tabs.create({url: "https://..<url>.."});

将onUpdated侦听器添加到background.js

chrome.tabs.onUpdated.addListener(function(tabId, changeInfo, tab) {
    sendMessage(tabURL);
});