Ich habe der Konsole Protokolle hinzugefügt, um den Status verschiedener Variablen zu überprüfen, ohne den Firefox-Debugger zu verwenden.
An vielen Stellen, an denen ich ein console.log
in meine main.js
Datei einfüge, erhalte ich jedoch anstelle meiner kleinen handgeschriebenen Nachrichten den folgenden Fehler:
Die synchrone XMLHttpRequest im Hauptthread ist aufgrund ihrer nachteiligen Auswirkungen auf die Benutzererfahrung veraltet. Weitere Hilfe unter http://xhr.spec.whatwg.org/
Welche Alternativen oder Wrapper console.log
kann ich zu meiner Codeverwendung hinzufügen, die diesen Fehler nicht verursachen?
Mache ich "es falsch"?
jquery
debugging
firefox
backbone.js
console.log
Nathan Basanese
quelle
quelle
<script>$.ajaxPrefilter(function( options, originalOptions, jqXHR ) { options.async = true; });</script>
Dadurch wird die Warnung entfernt. Sie können hier für das gleiche Problem sehen.Antworten:
Dies passierte mir, als ich faul war und ein Skript-Tag als Teil des zurückgegebenen Inhalts einfügte. So wie:
Teilweiser HTML-Inhalt:
Zumindest in meinem Fall scheint es so zu sein, dass jQuery einen Aufruf zum Abrufen dieses Skripts veranlasst, wenn Sie HTML-Inhalte wie diesen über xhr zurückgeben. Dieser Aufruf erfolgt mit einem asynchronen Flag false, da davon ausgegangen wird, dass Sie das Skript zum weiteren Laden benötigen.
In Situationen wie dieser ist es besser, wenn Sie sich ein verbindliches Framework ansehen und nur ein JSON-Objekt zurückgeben. Abhängig von Ihrem Backend und Ihren Vorlagen können Sie die Art und Weise ändern, in der Sie Ihre Skripte laden.
Sie können auch jQuery's verwenden
getScript()
, um relevante Skripte abzurufen. Hier ist eine Geige: Es ist nur eine direkte Kopie des jQuery-Beispiels, aber ich sehe keine Warnungen, wenn Skripte auf diese Weise geladen werden.Beispiel
http://jsfiddle.net/49tkL0qd/
quelle
<script>
wie Sie in einem Rückruf gesagt haben eines asynchronen Ajax-Aufrufs. Mein Ajax - Aufruf ist asynchron jedoch in der Callback - I machen ,$('#object').html(data)
wo Daten sind ein Stückhtml
mit<script>
und wenn diese Linie der Fehler erscheinen in dem ausgeführt wirdjs console
. +1 !!! danke:)
.Die Warnmeldung kann auf eine XMLHttpRequest-Anforderung im Hauptthread zurückzuführen sein, bei der das asynchrone Flag auf false gesetzt ist.
https://xhr.spec.whatwg.org/#synchronous-flag :
Die zukünftige Richtung besteht darin, XMLHttpRequests nur in Arbeitsthreads zuzulassen. Die Nachricht soll eine entsprechende Warnung sein.
quelle
console.log
wird, diese Warnungen zu senden?Ich hatte auch das gleiche Problem, konnte es aber beheben, indem ich async: true setzte. Ich weiß, dass es standardmäßig wahr ist, aber es funktioniert, wenn ich es explizit schreibe
quelle
Der Live-Debugger von Visual Studio 2015/2017 fügt Code ein, der den veralteten Aufruf enthält.
quelle
Manchmal ist es notwendig, ein Skript zu laden, das Dokument jedoch erst nach dem Laden des Skripts zu warten.
jQuery unterstützt dies mit der
holdReady()
Funktion.Anwendungsbeispiel:
Das eigentliche Laden des Skripts ist asynchron ( kein Fehler ), aber der Effekt ist synchron, wenn der Rest Ihres JavaScript ausgeführt wird, nachdem das Dokument fertig ist .
Dokumentation:
https://api.jquery.com/jquery.holdready
UPDATE 7. Januar 2019
Von JQMIGRATE :
quelle
Verwenden Sie nicht, um diese Warnung zu vermeiden:
in einem Ihrer $ .ajax () -Aufrufe. Dies ist die einzige Funktion von XMLHttpRequest, die veraltet ist.
Der Standardwert ist
jQuery hat synchrones XMLHTTPRequest abgelehnt
quelle
Die Teilantwort von @Webgr hat mir tatsächlich geholfen, dieses @ Konsolenprotokoll zu debuggen. Schade, dass der andere Teil dieser Antwort so viele Abstimmungen gebracht hat :(
Wie auch immer, hier ist, wie ich herausgefunden habe, was die Ursache für diese Warnung in meinem Fall war:
In meinem Fall lud ein anderes Plugin nach jedem Ajax-Aufruf 2 .js-Bibliotheken , die absolut weder erforderlich noch notwendig waren. Durch Deaktivieren des Rogue-Plugins wurde die Warnung aus dem Protokoll entfernt. Ab diesem Zeitpunkt können Sie entweder versuchen, das Problem selbst zu beheben (z. B. das Laden der Skripte auf bestimmte Seiten oder Ereignisse zu beschränken - dies ist viel zu spezifisch für eine Antwort hier) oder sich an den Plugin-Entwickler eines Drittanbieters wenden, um es zu lösen.
Hoffe das hilft jemandem.
quelle
Ich habe mir die Antworten alle beeindruckend angesehen. Ich denke, er sollte den Code bereitstellen, der ihm ein Problem bereitet. Wenn Sie im folgenden Beispiel ein Skript zum Verknüpfen mit jquery in page.php haben, erhalten Sie diesen Hinweis.
quelle
Ich erhalte eine solche Warnung in folgendem Fall:
1) Datei1, die enthält
<script type="text/javascript" src="/javascript/jquery-1.10.2.js"></script>
. Seite hat Eingabefelder. Ich gebe einen Wert in das Eingabefeld ein und klicke auf die Schaltfläche. Jquery sendet Eingaben an eine externe PHP-Datei.2) externe PHP-Datei enthält auch JQuery und in der externen PHP-Datei habe ich auch enthalten
<script type="text/javascript" src="/javascript/jquery-1.10.2.js"></script>
. Denn wenn das so ist, habe ich die Warnung bekommen.Aus
<script type="text/javascript" src="/javascript/jquery-1.10.2.js"></script>
externer PHP-Datei entfernt und funktioniert ohne Warnung.Wie ich beim Laden der ersten Datei (Datei1) verstehe, lade ich
jquery-1.10.2.js
und da die Seite nicht neu geladen wird (sie sendet Daten mit jquery an eine externe PHP-Datei$.post
),jquery-1.10.2.js
bleibt sie bestehen. Also nicht nochmal zum laden nötig.quelle
Ich habe diese Ausnahme erhalten, als ich eine URL in einer Abfrage wie "example.com/files/text.txt" festgelegt habe. Ich habe die URL in " http://example.com/files/text.txt " geändert und diese Ausnahme ist verschwunden.
quelle
Und ich habe diese Ausnahme erhalten, weil ich ein can.js-Skript in ein anderes eingefügt habe, z.
quelle
In einer MVC-Anwendung wurde diese Warnung angezeigt, weil ich ein Kendo-Fenster mit einer Methode öffnete, die eine View () anstelle einer PartialView () zurückgab. The View () hat versucht, alle Skripte der Seite erneut abzurufen.
quelle
Es passierte mir in ZF2. Ich habe versucht, den Modal-Inhalt zu laden, aber ich habe vergessen, das Layout zuvor zu deaktivieren.
Damit:
quelle
Wie bei @Nycen habe ich auch diesen Fehler aufgrund eines Links zu Cloudfare erhalten. Meins war für das Select2- Plugin.
Um das Problem zu beheben, habe ich es gerade entfernt
und der Fehler ging weg.
quelle
press F12
F1
."Don't show chrome Data Saver warning"
- Aktivieren Sie dieses Kontrollkästchen."Log XMLHTTPRequest"
- Aktivieren Sie auch dieses Kontrollkästchen.Genießen
quelle
Dies ist in meinem Fall gelöst.
Diese Antwort wurde in diesen Link eingefügt
/programming/28322636/synchronous-xmlhttprequest-warning-and-script
quelle
In meinem Fall wurde dies durch das Flexie- Skript verursacht, das Teil der von Cloudflare angebotenen App "CDNJS Selections" war .
Laut Cloudflare "wird diese App im März 2015 nicht mehr unterstützt". Ich schaltete es aus und die Nachricht verschwand sofort.
Sie können auf die Apps zugreifen, indem Sie https://www.cloudflare.com/a/cloudflare-apps/yourdomain.com besuchen
NB: Dies ist eine Kopie meiner Antwort auf diesen Thread Synchronous XMLHttpRequest-Warnung und <script> (ich habe beide besucht, als ich nach einer Lösung gesucht habe)
quelle
Ich habe dies mit den folgenden Schritten behoben:
quelle
In meinem speziellen Fall habe ich einen Rails-Teil gerendert, ohne
render layout: false
den das gesamte Layout einschließlich aller Skripte im<head>
Tag neu gerendert wurde . Das Hinzufügenrender layout: false
zur Controller-Aktion hat das Problem behoben.quelle
Für mich bestand das Problem darin, dass ich bei einer OK-Anfrage erwartet hatte, dass die Ajax-Antwort eine gut formatierte HTML-Zeichenfolge wie eine Tabelle ist. In diesem Fall trat jedoch ein Problem mit der Anfrage auf, die auf eine Fehlerseite umleitete. und gab daher den HTML-Code der Fehlerseite zurück (die
<script
irgendwo ein Tag hatte. Ich habe die Ajax-Antwort auf der Konsole protokolliert und festgestellt, dass dies nicht das war, was ich erwartet hatte, und dann mein Debugging durchgeführt.quelle
Die Frage wurde 2014 und 2019 gestellt. Ich denke, es ist gut, nach einer besseren Option zu suchen.
Sie können einfach
fetch
API in Javascript verwenden, um mehr Flexibilität zu erhalten.Siehe zum Beispiel diesen Code
quelle