我需要使用内容脚本打开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"});
}
});
它工作得很好,问题是标签是打开的,但也打开了很多标签...我只需打开一个标签需要做什么?
答案 0 :(得分:1)
当您运行内容脚本时,它也会在您打开的新选项卡中运行,因此最终会打开无限量的选项卡。为了限制这一点,您可以将tabs.create
置于不在页面加载时立即运行的函数内。
答案 1 :(得分:0)
问题很可能是你正在调用" chrome.runtime.onMessage.addListener"多次,所以当它收到消息时,你添加的所有监听器都会打开一个标签,每个标签都会被设置一次。