Google chrome extension 从Chrome extension访问同一网站的选项卡,而无需使用;“标签”;许可

Google chrome extension 从Chrome extension访问同一网站的选项卡,而无需使用;“标签”;许可,google-chrome-extension,Google Chrome Extension,我正在为Google Chrome编写一个窗口管理器扩展,这个扩展应该只在特定的网站上工作 我需要列出给定网站的所有打开选项卡,为此,我需要: chrome.windows.getAll(windows=>{ forEach(窗口=>{ chrome.tabs.query({windowId:window.id},tabs=>{ const websitetab=tabs.filter(tab=>tab.url.startsWith(MY_网站)); console.log(websitetab

我正在为Google Chrome编写一个窗口管理器扩展,这个扩展应该只在特定的网站上工作

我需要列出给定网站的所有打开选项卡,为此,我需要:

chrome.windows.getAll(windows=>{
forEach(窗口=>{
chrome.tabs.query({windowId:window.id},tabs=>{
const websitetab=tabs.filter(tab=>tab.url.startsWith(MY_网站));
console.log(websitetab);
});
});
});
我遇到的问题是,要使上述代码正常工作,我需要访问
tab.url
,这需要
tabs
权限,这反过来会向安装我的扩展的用户显示一条警告,说明我的扩展可以访问他们的浏览器历史记录


我如何在不需要
选项卡
权限的情况下让上述代码正常工作,这样我的用户就不会担心他们的隐私了?

我找到了一种方法,我不确定是否有更好的系统,但这个系统可以工作

基本上,我向每个选项卡发送一条消息,并告诉我的网站选项卡使用其URL进行响应,这样我只接收来自我自己网站选项卡的响应

//background.js
chrome.windows.getAll(windows=>{
forEach(窗口=>{
chrome.tabs.query({windowId:window.id},tabs=>{
tabs.forEach(tab=>{
chrome.tabs.sendMessage(
选项卡id,
{消息:'whois',id:tab.id},
url=>{
log('这是选项卡URL!',URL);
}
);
});
const websitetab=tabs.filter(tab=>tab.url.startsWith(MY_网站));
});
});
});
//inject.js
chrome.runtime.onMessage.addListener((请求、发送方、发送响应)=>{
如果(request.message==='whois'){
sendResponse(window.location.href);
}
});