从内容脚本中打开chrome选项卡

时间:2015-02-21 10:55:37

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

我需要使用内容脚本打开chrome标签。 我检查了在chrome示例中传递的消息并尝试了这个 在内容脚本中:

chrome.runtime.sendMessage({greeting: "hello"}, function (response) {
    console.log(response.farewell);
});

在background.js

chrome.runtime.onMessage.addListener(
        function (request, sender, sendResponse) {
            chrome.extension.getBackgroundPage().console.log('resp.type');
            console.log(sender.tab ?
                    "from a content script:" + sender.tab.url :
                    "from the extension");
            if (request.greeting == "hello") {
                chrome.tabs.create({url: 'http://google.com'});
                sendResponse({farewell: "goodbye"});
            }
        });

它工作得很好,问题是标签是打开的,但也打开了很多标签...我只需打开一个标签需要做什么?

2 个答案:

答案 0 :(得分:1)

当您运行内容脚本时,它也会在您打开的新选项卡中运行,因此最终会打开无限量的选项卡。为了限制这一点,您可以将tabs.create置于不在页面加载时立即运行的函数内。

答案 1 :(得分:0)

问题很可能是你正在调用" chrome.runtime.onMessage.addListener"多次,所以当它收到消息时,你添加的所有监听器都会打开一个标签,每个标签都会被设置一次。

相关问题