web-dev-qa-db-fra.com

Synchronous XMLHttpRequest sur le thread principal est obsolète

Pourquoi ce message a-t-il soudainement commencé à apparaître dans la console Firefox?

J'utilise JQuery 1.7.1.

Qu'est-ce qui a provoqué l'apparition de ce message dans mon application?

37
1DMF

L'utilisation de jQuery pour ajouter une balise de script au document provoquera le chargement du script avec async: false et le déclenchement de cet avertissement.

Un péché:

var script = $("<script></script>");
script.attr("src", player.basepath + "whatever.js");
$(document.body).append(script);
39
Jason Kester

Vous avez un code exécutant XHR/Ajax synchrone, c'est-à-dire que les demandes Ajax bloquent jusqu'à ce qu'elles soient terminées.

Lorsque vous utilisez jQuery, vous devez spécifier async: false Dans l'objet de paramètres de jQuery.ajax().

La solution consiste à refactoriser n'importe lequel de votre code en effectuant des requêtes synchrones, c'est-à-dire à supprimer toutes les instances de jQuery.ajax({async: false}) et les fonctions d'assistance, ainsi que xhr.open(..., false), à inclure du code dans des bibliothèques tierces utilisables. . De plus, jQuery 1.7.1 étant assez ancien par rapport aux standards du Web, je ne sais pas si cette version de jQuery effectue toujours des demandes de synchronisation internes dans certains cas. Vous devrez également vérifier cela et mettre à niveau jQuery le cas échéant.

15
nmaier