Firefox 132 für Entwickler

Dieser Artikel beschreibt die Änderungen in Firefox 132, die Entwickler beeinflussen. Firefox 132 wurde am 29. Oktober 2024 veröffentlicht.

Änderungen für Webentwickler

HTML

Keine bemerkenswerten Änderungen

CSS

Entfernungen

JavaScript

HTTP

  • Der Standard/Dokumentwert des HTTP-Accept-Headers wurde auf text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 geändert. Dadurch werden Bild-MIME-Typen entfernt, die manchmal Kompatibilitätsprobleme verursachten, und es wird an die Fetch-Spezifikation und Safari angepasst. (Firefox Bug 1917177).

Entfernungen

  • HTTP/2 Server Push ist standardmäßig deaktiviert, indem die Einstellung network.http.http2.allow-push 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 vollständig entfernt werden. (Firefox Bug 1915848).

Datenschutz

APIs

Medien, WebRTC und Webaudio

  • Die Methoden requestVideoFrameCallback() und cancelVideoFrameCallback() der Schnittstelle HTMLVideoElement werden jetzt unterstützt. Die Methode requestVideoFrameCallback() registriert eine Callback-Funktion, die ausgeführt wird, wenn ein neues Videobild an den Kompositor gesendet wird. Entwickler können diese Funktion verwenden, um Operationen auf jedem Videobild auszuführen und so effizienteres Malen auf eine Leinwand, Videoanalyse, Synchronisierung mit externen Audioquellen und so weiter zu ermöglichen. Die Methode gibt einen Callback-Handle zurück, der an cancelVideoFrameCallback() übergeben werden kann, um die ausstehende Callback-Anfrage abzubrechen. (Firefox Bug 1919367, Firefox Bug 1800882).
  • Die Methode MediaStreamTrack.getCapabilities() wird jetzt unterstützt. Diese gibt ein Objekt zurück, das die akzeptierten Werte oder den Wertebereich für jede einschränkbare Eigenschaft des zugehörigen MediaStreamTrack beschreibt (Firefox Bug 1179084).

WebDriver-Konformität (WebDriver BiDi, Marionette)

WebDriver BiDi

  • Mehrere Verbesserungen wurden implementiert, um WebDriver BiDi-Befehle zuverlässiger zu machen, wenn sie während der Navigation verwendet werden oder mit neu erstellten Registerkarten. Zuvor schlugen Befehle wie browsingContext.setViewport aufgrund eines AbortError wahrscheinlich fehl, sie werden nun einige Male wiederholt, um solche Probleme zu vermeiden. (Firefox Bug 1854942, Firefox Bug 1918287, Firefox Bug 1918672, Firefox Bug 1921756)
  • Das Ereignis browsingContext.contextCreated wird jetzt korrekt für lazy-geladene Frames ausgelöst. Zuvor wurde das Ereignis nur ausgelöst, wenn das iframe tatsächlich begann, seinen Inhalt zu laden. (Firefox Bug 1878166)
  • Netzwerkanforderungen für zwischengespeicherte Stylesheet-Abfragen werden jetzt korrekt ausgelöst. (Firefox Bug 1879438)
  • Netzwerkereignis-Zeitmessungen verwendeten zuvor die falsche Einheit und wurden in Mikrosekunden angegeben. Sie sind jetzt korrekt in Millisekunden gesetzt. (Firefox Bug 1916685)
  • Die requestTime aus den Netzwerkereignis-Zeitmessungen sollte jetzt genauer sein und wirklich die Zeit entsprechen, zu der die Anfrage tatsächlich begann. (Firefox Bug 1922390)

Experimentelle Web-Features

Diese Features sind neu in Firefox 132 eingeführt, aber standardmäßig deaktiviert. Um sie auszuprobieren, suchen Sie die entsprechende Einstellung auf der about:config Seite und setzen Sie diese auf true. Weitere solcher Features finden Sie auf der Seite Experimentelle Features.

  • Cookie Store API: dom.cookieStore.enabled.

    Die Cookie Store API ist eine moderne, auf Promise basierende Methode zum Verwalten von Cookies, die nicht den Ereignis-Loop blockiert und nicht auf Document angewiesen ist (sie kann daher für Service-Arbeiter verfügbar gemacht werden). Ab Firefox 132 wurde ein Teil der Cookie Store API implementiert. (Firefox Bug 1800882). Dies umfasst:

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

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

    Dies ermöglicht eine Fetch-Anfrage als Alternative zu Navigator.sendBeacon(), um Analysen am Ende einer Sitzung zu senden, was einige Vorteile hat (Sie können HTTP-Methoden andere als POST verwenden, Anforderungs-Eigenschaften anpassen und auf die Serverantwort über die Erfüllung des Fetch-Promise zugreifen). Es ist auch in Service-Arbeitern verfügbar. (Firefox Bug 1906952).

  • CloseWatcher: dom.closewatcher.enabled. Die Schnittstelle CloseWatcher ermöglicht es Entwicklern, Komponenten zu implementieren, die über gerätenative Mechanismen geschlossen werden können, ähnlich wie eingebaute Komponenten. Zum Beispiel können Sie auf Android einen Dialog mit der Zurück-Taste schließen: diese Schnittstelle ermöglicht es Ihnen, eine benutzerdefinierte Seitenleiste auf ähnliche Weise zu schließen. (Firefox Bug 1888729).

  • Promise.try(): javascript.options.experimental.promise_try. Promise.try() ist eine bequeme Methode, die einen Callback beliebiger Art (gibt zurück oder wirft, synchron oder asynchron) verwendet und sein Ergebnis in ein Promise einhüllt, sodass Promise-Semantiken (z.B. .then(), .catch()) verwendet werden können, um es zu verarbeiten (Firefox Bug 1905364).

  • JSON.parse mit Quelle: javascript.options.experimental.json_parse_with_source. Der Vorschlag zur JSON.parse-Quelltextzugang erweitert das Verhalten von JSON.parse, um Funktionen bereitzustellen, die Probleme um den Präzisionsverlust bei der Konvertierung von Werten wie großen Gleitkommazahlen und Datumswerten zwischen JavaScript-Werten und JSON-Text zu mindern (Firefox Bug 1913085, Firefox Bug 1925334). Insbesondere sind die folgenden Funktionen jetzt verfügbar:

    • Das reviver Parameter context Argument von JSON.parse(): Bietet Zugriff auf den ursprünglichen JSON-Quelltext, der geparst wurde.
    • JSON.isRawJSON(): Überprüft, ob ein Wert ein Objekt ist, das von JSON.rawJSON() zurückgegeben wird.
    • JSON.rawJSON(): Erstellt ein "rohes JSON"-Objekt, das ein Stück JSON-Text enthält, der dann in ein Objekt aufgenommen werden kann, um den angegebenen Wert zu erhalten, wenn dieses Objekt stringifiziert wird.

Ältere Versionen