【发布时间】:2016-10-24 11:10:15
【问题描述】:
我有一个 Chrome 扩展程序,它创建了一个用户需要用于登录系统的弹出窗口。您单击扩展图标,它会打开它的应用程序(在我的例子中是 AngularJS)。然后用户点击一个调用chrome.windows.create()的按钮来打开一个弹出窗口。
我希望主扩展应用程序监视该弹出窗口的 URL 以进行更改。
我通过这种方式从扩展创建弹出窗口:
chrome.windows.create(
{
url: 'https://some.external.url.com/whatever',
type: 'panel',
width: 600,
height: 600
},
function (windowReference) {
console.log('My Window:', windowReference);
// start monitoring URL of windowReference somehow
// could be as simple as a setInterval() loop
}
)
问题是传递给回调的windowReference 对象没有弹出窗口的当前URL。由于用户可以与弹出窗口中的页面进行交互(我将其指向 OAuth2 系统),因此 URL 有时会更改。我希望看到这一点 - 或者在进行更改时主动进行,或者通过简单地定期查询当前 URL。
这是windowReference 对象包含的内容:
{
alwaysOnTop:false,
focused:false,
height:600,
id:1089,
incognito:false,
left:61,
state:"normal",
top:23,
type:"popup",
width:600
}
你可以看到那里有一个 ID,对我来说,这表明我可以使用它来调用其他方法来获取我想要的真实 URL 信息。
任何帮助将不胜感激。
【问题讨论】:
-
提示:
chrome.tabs.query和相关事件。 -
@RobW 是的,我对此很熟悉。但是当我使用它时,我得到的是打开扩展程序时打开的选项卡的 URL,而不是由扩展应用程序本身创建的弹出窗口的 URL(并且不驻留在选项卡内)。
-
我猜你没有尝试用
windowId: windowReference.id来调用它? -
@RobW 太好了,我会试一试。谢谢。
标签: javascript google-chrome google-chrome-extension