Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/443.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从内容脚本打开chrome选项卡_Javascript_Google Chrome_Google Chrome Extension - Fatal编程技术网

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

Javascript 从内容脚本打开chrome选项卡,javascript,google-chrome,google-chrome-extension,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,

我需要使用内容脚本打开一个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"});
            }
        });

它工作正常,问题是该选项卡正在打开,但也打开了很多选项卡…我需要做什么才能只打开一个选项卡?

当您运行内容脚本时,它也会在您打开的新选项卡中运行,因此它最终会打开无限多的选项卡。要限制这一点,您可以将
选项卡放置在一个函数中,该函数在页面加载时不会立即运行。

问题很可能是您多次调用“chrome.runtime.onMessage.addListener”,因此当它收到消息时,您添加的所有侦听器都会打开一个选项卡,每设置一次。

否,它仍在打开。。现在它从选项卡位置0开始打开,而不是之前的下一个选项卡..我算出了。请给我一点时间更新答案。@AR7:您不必删除旧内容,因为这样可以提供完整的编辑历史记录(如果有人愿意查看)。我的意思是,有时删除内容是有意义的,但可能只适用于流行的正确答案过时的情况。@Xan您能检查一下吗?需要知道我是否可以让后台脚本只运行一次..您的内容脚本是如何注入的?添加相关的清单规则