Firefox 132 für Entwickler

Dieser Artikel bietet Informationen über die Änderungen in Firefox 132, die Entwickler betreffen. Firefox 132 wurde am 29. Oktober 2024 veröffentlicht.

Änderungen für Webentwickler

HTML

Keine nennenswerten Änderungen

CSS

Entfernungen

JavaScript

HTTP

  • Der Standardwert des HTTP-Accept-Headers wurde auf text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 geändert. Dies entfernt Bild-MIME-Typen, die manchmal Kompatibilitätsprobleme verursachten, und stimmt mit der Fetch-Spezifikation und Safari überein. (Firefox-Bug 1917177).

Entfernungen

  • HTTP/2 Server Push ist standardmäßig deaktiviert mit der Einstellung network.http.http2.allow-push, die jetzt auf false gesetzt ist. Dieses Feature wird von keinem anderen großen Browser mehr unterstützt, und die Implementierung könnte in einer zukünftigen Version komplett entfernt werden. (Firefox-Bug 1915848).

Datenschutz

APIs

Medien, WebRTC und Web Audio

  • Die Methoden requestVideoFrameCallback() und cancelVideoFrameCallback() der HTMLVideoElement Schnittstelle werden jetzt unterstützt. Die requestVideoFrameCallback() registriert eine Callback-Funktion, die ausgeführt wird, wenn ein neues Videoframe an den Kompositor gesendet wird. Entwickler können diese Funktion nutzen, um Operationen an jedem Videoframe durchzuführen, wodurch eine effizientere Zeichnung auf eine Leinwand, Videoanalyse, Synchronisierung mit externen Audioquellen und weitere Anwendungen möglich sind. Die Methode gibt einen Callback-Handle zurück, der an cancelVideoFrameCallback() übergeben werden kann, um die ausstehende Callback-Anforderung zu stornieren. (Firefox-Bug 1919367, Firefox-Bug 1800882).
  • Die Methode MediaStreamTrack.getCapabilities() wird jetzt unterstützt. Sie gibt ein Objekt zurück, das die akzeptierten Werte oder den Wertebereich für jede einschränkbare Eigenschaft der zugehörigen MediaStreamTrack beschreibt (Firefox-Bug 1179084).

WebDriver-Konformität (WebDriver BiDi, Marionette)

WebDriver BiDi

  • Es wurden mehrere Verbesserungen implementiert, um WebDriver BiDi-Befehle zuverlässiger zu machen, wenn sie während der Navigation oder mit neu erstellten Tabs verwendet werden. Bisher schlugen Befehle wie browsingContext.setViewport wahrscheinlich aufgrund eines AbortError-Fehlers fehl, jetzt werden sie ein paar Mal wiederholt, um solche Probleme zu vermeiden. (Firefox-Bug 1854942, Firefox-Bug 1918287, Firefox-Bug 1918672, Firefox-Bug 1921756)
  • Das browsingContext.contextCreated-Ereignis wird jetzt korrekt für verzögert geladene Frames ausgegeben. Bisher wurde das Ereignis nur ausgegeben, wenn das iframe tatsächlich begonnen hatte, seinen Inhalt zu laden. (Firefox-Bug 1878166)
  • Netzwerkereignisse werden jetzt korrekt für zwischengespeicherte Stylesheet-Anforderungen ausgegeben. (Firefox-Bug 1879438)
  • Die Zeiteinheiten der Netzwerkereignistimings wurden zuvor in Mikrosekunden angegeben, jetzt werden sie korrekt in Millisekunden gesetzt. (Firefox-Bug 1916685)
  • Die requestTime der Netzwerkereignistimings sollte jetzt genauer sein und tatsächlich die Zeit widerspiegeln, zu der die Anforderung tatsächlich gestartet wurde. (Firefox-Bug 1922390)

Experimentelle Web-Funktionen

Diese Funktionen sind neu in Firefox 132 eingeführt, aber standardmäßig deaktiviert. Um mit ihnen zu experimentieren, suchen Sie nach der entsprechenden Einstellung auf der about:config Seite und setzen Sie diese auf true. Sie können weitere solche Funktionen auf der Seite Experimentelle Funktionen finden.

  • Cookie Store API: dom.cookieStore.enabled.

    Die Cookie Store API ist eine moderne, auf Promise basierende Methode zur Verwaltung von Cookies, die den Ereignisloop nicht blockiert und nicht auf Document angewiesen ist (sie kann daher auch in Service Workern verfügbar gemacht werden). Ab Firefox 132 wurde ein Teil der Cookie Store API implementiert. (Firefox-Bug 1800882). Dies umfasst:

  • Die fetch() keepalive Option: dom.fetchKeepalive.enabled.

    Die globale fetch() Methode hat eine keepalive Initialisierungsoption. Wenn keepalive auf true gesetzt ist, bricht der Browser die zugehörige Anfrage nicht ab, falls die Seite, die sie initiiert hat, entladen wird, bevor die Anfrage abgeschlossen ist.

    Dies ermöglicht es, eine Fetch-Anforderung als Alternative zu Navigator.sendBeacon() zu verwenden, um Analysen am Ende einer Sitzung zu senden, was einige Vorteile hat (man kann HTTP-Methoden außer POST verwenden, Anforderungseigenschaften anpassen und auf die Serverantwort über die Fetch-Promise-Erfüllung zugreifen). Es ist auch in Service Workern verfügbar. (Firefox-Bug 1906952).

  • CloseWatcher: dom.closewatcher.enabled.

    Die CloseWatcher Schnittstelle ermöglicht es Entwicklern, Komponenten zu implementieren, die mit gerätenativen Mechanismen geschlossen werden können, genauso wie eingebaute Komponenten. Zum Beispiel kann man auf Android einen Dialog mit der Zurück-Taste schließen: diese Schnittstelle ermöglicht es, eine benutzerdefinierte Seitenleiste auf ähnliche Weise zu schließen. (Firefox-Bug 1888729).

  • Promise.try(): javascript.options.experimental.promise_try. Promise.try() ist eine praktischere Methode, die einen Callback jeglicher Art (geben oder werfen, synchron oder asynchron) nimmt und sein Ergebnis in ein Promise einwickelt, sodass Promise-Semantik (z. B. .then(), .catch()) verwendet werden kann, um damit umzugehen (Firefox-Bug 1905364).

  • JSON.parse mit Quelle: javascript.options.experimental.json_parse_with_source. Der JSON.parse-Quelltextzugriffs-Vorschlag erweitert das Verhalten von JSON.parse, um Funktionen bereitzustellen, die Probleme beim Verlust von Genauigkeit beim Konvertieren von Werten wie großen Fließkommazahlen und Datumswerten zwischen JavaScript-Werten und JSON-Text zu mildern (Firefox-Bug 1913085, Firefox-Bug 1925334). Insbesondere sind die folgenden Funktionen jetzt verfügbar:

    • Der JSON.parse() reviver-Parameter context-Argument: Bietet Zugriff auf den ursprünglich geparsten JSON-Quelltext.
    • JSON.isRawJSON(): Überprüft, ob ein Wert ein von JSON.rawJSON() zurückgegebenes Objekt ist.
    • JSON.rawJSON(): Erstellt ein "rohes JSON"-Objekt, das ein JSON-Textstück enthält, das dann in ein Objekt aufgenommen werden kann, um den angegebenen Wert beizubehalten, wenn dieses Objekt in eine Zeichenkette umgewandelt wird.

Ältere Versionen