在我的web应用程序中,我需要通过let popup = window.open(url, 'MyPopupName' ..)
打开一个弹出窗口,然后以某种方式在chrome扩展中获得对该窗口/选项卡的引用。
我不能在弹出窗口中使用任何脚本,因为url来自另一个来源。而且似乎没有简单的方法可以通过指定的"MyPopupName"名称查询chrome扩展中的所有选项卡(除了将脚本注入所有选项卡并通过消息传递获取window.name(。
有没有一种简单的方法可以将popup
传递给扩展并获得弹出窗口的tabId?
由于扩展受到相同的跨源JS限制,请使用chrome.windows.create而不是window.open.
async function openPopup(url) {
const wnd = await chrome.windows.create({
url, type: 'popup', width: 500, height: 500,
});
const tabId = wnd.tabs[0].id;
console.log(tabId, wnd);
}
它仅在扩展页面/框架中可用,例如action
弹出窗口、选项、背景脚本。这意味着它不能在内容脚本中使用,但您可以发送带有URL的消息,并让后台脚本在其onMessage中打开它。
请注意,wnd
与JavaScriptwindow
对象无关,这是一个完全不同的东西,因此您无法访问新窗口的全局。