0

In Chrome developer manual heißt es: "Viele Funktionen im Erweiterungssystem verwenden einen optionalen windowId-Parameter, der standardmäßig auf das aktuelle Fenster verweist."Aktualisierungsfenster für Chrome-Aktualisierung (unerwarteter Token-Fehler)

Meine Anwendung erstellt ein neues Fenster (nennen wir es myWindow) im Popup-Zustand. Wenn Sie in diesem Fenster arbeiten, wird der Benutzer wahrscheinlich auf einer anderen Site landen ("example.com"). Mein Manifest löst beim Laden von example.com eine contentscript.js aus. In content.js möchte ich die Breite von myWindow auf 1000 setzen (wenn der Benutzer example.com aufruft).

Das ist alles Hintergrund. Aber meine Frage ist sehr einfach. Warum funktioniert das folgende nicht:

if(window.location.href.indexOf("example.com") != -1){ 
    chrome.windows.update(, { width: 1000 }); 
} 

Es führt den folgenden Fehler:

Uncaught SyntaxError: Unexpected token , 

in der Konsole. Was macht Sinn. Da es keinen Inhalt vor dem "," gibt, ist es nicht super überraschend, dass es als unerwartet parst. Aber zeigt das chrome-Entwicklerhandbuch nicht an, dass der Parameter "standardmäßig auf das aktuelle Fenster eingestellt ist?"

Also, wie kann ich es "Standard" abgesehen davon, einen Wert nicht angeben? Wie erreiche ich das gewünschte Ergebnis?

Antwort

0

Ich habe diese Frage bereits in Ihrem SO question in Bezug auf die Bearbeitung von Chrome Fenstergrößen beantwortet. Hör zu. In diesem Thread habe ich bereits erwähnt mit chrome.windows.WINDOW_ID_CURRENT so sieht es aus wie:

chrome.windows.update(chrome.windows.WINDOW_ID_CURRENT, { width: 1000 }); 
0

Es funktioniert nicht, weil es nicht gültig JS Syntax ist.

Wenn ein Parameter in den Chrome API-Dokumenten optional heißt, überspringen Sie ihn einfach in der Signatur. Chrome API prüft die Gesamtzahl der Parameter und deren Typ (Anzahl, Zeichenfolge, Objekt), um zu erraten, was Sie gemeint haben. Die API ist so angeordnet, dass dies eindeutig ist.

Allerdings, dass parameter is not marked as optional. Sie müssen es bereitstellen. Glücklicherweise die API provides a constant in diesem Fall zu benutzen:

chrome.windows.update(chrome.windows.WINDOW_ID_CURRENT, { width: 1000 }); 

Hinweis: dass API ist sehr alt und das ist nicht im Einklang mit anderen APIs. Zum Beispiel, chrome.tabs markiert tabId als wirklich optional.

+0

Dies funktioniert nicht. Es wird kein Fehler ausgegeben, aber das Fenster wird nicht aktualisiert. Es gibt nur ein offenes Fenster, also glaube ich nicht, dass es sich um das falsche Fenster handeln könnte. Obwohl es vielleicht auf ein nicht mehr existierendes Fenster abzielt. Gibt es eine einfache Möglichkeit, um das letzte fokussierte Fenster zu erreichen? – COMisHARD

+0

Ist das Fenster maximiert? Wenn ja, funktioniert die Änderung der Geometrie möglicherweise nicht. – Xan