Chrome扩展后台脚本:如何判断popup.html是否已打开?
解决方案:避免重复打开popup.html标签页
可以通过chrome.tabs.query API查询已打开的标签页中是否存在目标页面,以此实现重复打开的判断逻辑,修改后的background.js代码如下:
chrome.runtime.onMessage.addListener(function (request, sender, sendResponse) { // 获取popup.html的完整扩展内URL const popupUrl = chrome.runtime.getURL('popup.html'); // 查询所有URL匹配popup.html的已打开标签页 chrome.tabs.query({ url: popupUrl }, function (tabs) { // 如果没有找到对应标签页,则创建新标签 if (tabs.length === 0) { chrome.tabs.create({ url: popupUrl }); } }); });
代码说明:
chrome.runtime.getURL('popup.html'):将相对路径转换为扩展内的完整绝对URL,确保查询时能精准匹配目标页面chrome.tabs.query({ url: popupUrl }, ...):查询所有已打开的、URL完全匹配popup.html的标签页- 当查询返回的
tabs数组长度为0时,说明没有已打开的popup.html页面,此时执行chrome.tabs.create创建新标签
内容的提问来源于stack exchange,提问作者Consider Non-Trivial Cases
相关产品推荐
相关产品推荐

