javascript - Chrome 扩展打开太多标签
问题描述
出于某种原因,当我单击扩展程序图标时,我的扩展程序(应该打开一个选项卡)首先会这样做,但是当我第二次单击它时,它会打开另外 2 个选项卡。第三次,它会打开另外 3 个选项卡。因此,在单击此扩展图标 3 次后,我应该有 3 个新标签,但我有 6 个。有什么想法吗?(这是我的扩展的简化版本)
背景脚本:
chrome.browserAction.onClicked.addListener(function(tab) {
chrome.tabs.query({active: true, currentWindow: true}, function(tabs) {
var activeTab = tabs[0];
chrome.tabs.sendMessage(activeTab.id, {"message": "clicked_browser_action"});
console.log("worked so far");
});
chrome.runtime.onMessage.addListener(
function(request, sender, sendResponse) {
if( request.type === "copy" ) {
console.log(request.url)
chrome.tabs.create({"url": request.url});
}
}
);
});
内容脚本:
chrome.runtime.onMessage.addListener(
function(request, sender, sendResponse) {
if( request.message === "clicked_browser_action" ) {
chrome.runtime.sendMessage({"type":"copy","url" : "http://www.google.com"});
}
}
);
解决方案
推荐阅读
- python - 如何将 SQLAlchemy 会话传递给多处理函数?
- java - Jasypt 加密异常:线程“主”java.lang.NoClassDefFoundError 中的异常:org/jasypt/encryption/StringEncryptor
- delphi - delphi如何获取数据并在Tgrid中显示
- javascript - 带有嵌套项的 Vue V-For 循环
- drupal - Drupal 7:向 drupal_add_js 添加权重不会改变脚本的位置
- python - 密集层 LSTM 的 ValueError
- html - 如何使用 Firebase 数据填充 HTML 页面?
- java - 查找 arraylist 元素时的语法
- python - 为什么会发生此错误?TypeError:只能将str(不是“int”)连接到str
- asp.net-core - Blazor - WebAssemby ASP.NET Core 托管模型