JavaScript: jQuery 3.6 bügelt Fehler aus mit neuem JSONP-Standardverhalten

Auf dem Weg zu jQuery 4.0 ist noch ein Punkt-Release erschienen: Version 3.6 behebt Bugs bei JSONP-Fehlern und beim Fokussieren von Elementen.

In Pocket speichern vorlesen Druckansicht 31 Kommentare lesen

(Bild: tomertu/Shutterstock.com)

Lesezeit: 3 Min.
Von
  • Silke Hahn
Inhaltsverzeichnis

Der Weg zu jQuery 4.0 ist offenbar mit Punktreleases gepflastert: Nun ist Version 3.6 der JavaScript-Library erschienen. Eigentlich stand schon vor zwei Minor Releases im Raum, dass auf jQuery 3.4 kein Punktrelease mehr folgen würde. Vor dem kommenden Hauptrelease galt es laut Blogankündigung jedoch, die Sicherheit der 3.x-Reihe weiter zu erhöhen (mit jQuery 3.5), und mit jQuery 3.6 hat das Entwicklerteam nun einige wesentliche Probleme behoben.

Das aktuelle Release macht offenbar einem besonders misslichen Fehler den Garaus: Wenn in früheren Versionen eine JSONP-Anfrage fehlerhaft war, bestand die Antwort oftmals noch aus einem ausführbaren Skript. Die jQuery-Entwickler haben dieses Verhalten nun verändert: Das Programm soll in dem Fall künftig versuchen, den Antworttext trotz des Fehlers zu parsen. Normale Skripte hingegen würden beim Auftreten von Fehlern weiterhin wie gehabt übersprungen. Zu diesem Thema gibt es eine ausführliche Diskussion auf der GitHub-Projektseite (Issue 4771 unter "JSONP and parsing responseText upon 409 Conflict").

Eine in Version 3.4 eingeführte Änderung zur bevorzugten Nutzung nativer Events hatte zu einem Fehler beim Umleiten des Fokus geführt. So kommt es in jQuery 3.4 und 3.5 offenbar vor, dass ein Element, vom dem der Fokus auf ein anderes Element zu übertragen wäre, sich den Fokus eigenmächtig wieder zurückholt. Das passiert, wenn das Element die native Funktion "focus", function() trägt, die seit Version 3.4 stets als Letztes ausgeführt wird und den Fokus dann vom zweiten Handler wieder zum Ausgangspunkt zurückbefördert. Folgende Codepassage veranschaulicht das Problem:

elem1.on( "focus", function() {
  elem2.trigger( "focus" );
} );

Das Umleiten des Fokus innerhalb des Focus-Handlers misslingt in dem Fall wegen der synchronen Durchführung, bei der die native Funktion das letzte Wort hat. Die jQuery-Entwickler haben das Problem dadurch gelöst, dass sie jQuery 3.6 nur mehr das letzte Fokus-Ereignis im DOM-Baum nach oben propagieren lassen.

Das zuvor fehlerbehaftete Abrufen von Dimensionen aus Tabellenzeilen in Firefox ist den Entwicklern zufolge repariert, und ein häufiges Absturzproblem im Browser Chrome, bei dem der Crash durch ein entferntes Element mit FocusOut-Event ausgelöst wurde, soll ebenfalls behoben sein. Einige weitere kleinere Änderungen lassen sich dem Changelog entnehmen, die gesamten Details stehen im Blogeintrag.

Das aktuelle Release von jQuery steht auf der Projekt-Website zum Download bereit. Nutzerinnen und Nutzer, die von jQuery 3.5 aus ein Upgrade durchführen wollen, können dafür den Upgrade Guide zu Rate ziehen. Wer von einer älteren Version aus aktualisieren möchte, sollte zuvor die umfassendere Dokumentation der Breaking Changes aufsuchen und sich darin eingehender über die notwendigen Anpassungen informieren. Ein Blick in die Änderungen, die mit den Versionen 3.4 und 3.5 Einzug gehalten hatten, kann hierbei nicht schaden.

(sih)