Ich habe eine Chrome-Erweiterung, die ein Popup-Fenster erstellt, das der Benutzer für ein Anmeldesystem verwenden muss. Sie klicken auf das Erweiterungssymbol und es öffnet seine Anwendung (AngularJS in meinem Fall). Der Benutzer klickt dann auf eine Schaltfläche, die chrome.windows.create()
aufruft, um ein Popup zu öffnen.URL des Popup-Fensters erhalten, das von einer Chrome-Erweiterung aus geöffnet wurde
Ich möchte die Haupterweiterung App die URL dieses Popup für Änderungen überwachen.
Ich schaffe das Popup aus der Erweiterung auf diese Weise:
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
}
)
Das Problem ist, dass das windowReference
Objekt an den Rückruf übergeben nicht die aktuelle URL des Popup haben. Da der Benutzer mit der Seite im Popup interagieren kann (ich zeige es auf das OAuth2-System), ändert sich die URL manchmal. Ich möchte das sehen - entweder aktiv, wenn Änderungen vorgenommen werden, oder einfach die aktuelle URL in regelmäßigen Abständen abfragen.
Dies ist, was das windowReference
Objekt enthält:
{
alwaysOnTop:false,
focused:false,
height:600,
id:1089,
incognito:false,
left:61,
state:"normal",
top:23,
type:"popup",
width:600
}
Sie können sehen, dass es eine ID ist, und dass, zu mir, lassen vermuten, dass ich eine andere Methode nennen könnte in der Lage sein, es zu benutzen Erhalte die echten URL-Informationen, nach denen ich suche.
Jede Hilfe wäre willkommen.
Hinweis: ['chrome.tabs.query'] (https://developer.chrome.com/extensions/tabs#method-query) und die zugehörigen Ereignisse. –
@RobW Ja, mir ist das vertraut. Aber wenn ich es verwende, erhalte ich die URL der Registerkarte, die geöffnet wurde, als ich die Erweiterung öffnete, und nicht des Popup-Fensters, das von der Erweiterungsanwendung selbst erstellt wurde (und sich nicht in einer Registerkarte befindet). –
Ich vermute, dass Sie nicht versucht haben, es mit 'windowId: windowReference.id' aufzurufen? –