Már naplókat adtam hozzá a konzolhoz, hogy ellenőrizzem a különböző változók állapotát a Firefox hibakereső használata nélkül.
Azonban sok helyen, ahol a main.js
fájlomban hozzáadok egy console.log
-ot, a következő hibát kapom a magamnak írt kedves kis kézzel írt üzeneteim helyett:
Synchronous XMLHttpRequest on the main thread is deprecated because of its adverse effects to the end user's experience. További segítségért http://xhr.spec.whatwg.org/
Milyen alternatívákat vagy burkolatokat adhatok a console.log
-nak a kódom használatához, amelyek nem okoznak ilyen hibát?
Talán "rosszul csinálom"?
Ez akkor történt velem, amikor lusta voltam, és a visszaadott tartalom részeként egy szkriptcímkét is beépítettem. Mint ilyen:
Részleges HTML tartalom:
<div>
SOME CONTENT HERE
</div>
<script src="/scripts/script.js"></script>
Úgy tűnik, legalábbis az én esetemben, hogy ha ilyen HTML tartalmat adsz vissza xhr-en keresztül, akkor a jQuery-t arra készteted, hogy hívást indítson a szkript megszerzésére. Ez a hívás false async flaggel történik, mivel feltételezi, hogy szükséged van a szkript betöltésének folytatására.
Az ilyen helyzetekben, mint ez, akkor'd jobb lenne, ha valamilyen kötési keretrendszert keresne, és csak egy JSON objektumot adna vissza, vagy a backendtől és a templatingtől függően megváltoztathatja a szkriptek betöltésének módját.
Használhatja a jQuery's getScript()
jQuery's getScript()
-t is a releváns szkriptek megragadásához. Itt van egy fiddle, Ez's csak egy egyenes másolata a jQuery példa, de én'm nem látok semmilyen figyelmeztetést dobott, amikor a szkriptek betöltése így.
Példa
<script>
var url = "/scripts/script.js";
$.getScript(url);
</script>
[
][1]A figyelmeztető üzenet lehet, hogy a főszálon belüli XMLHttpRequest-kérésnek köszönhető, amelynek aszinkron jelzője hamisra van állítva.
https://xhr.spec.whatwg.org/#synchronous-flag:
Szinkron XMLHttpRequest a munkásokon kívül van folyamatban. eltávolítják a webes platformról, mivel káros hatással van a a végfelhasználó's tapasztalat. (Ez egy hosszú folyamat, amely sok évekig tart.) A fejlesztők nem adhatnak át false-t az async argumentumhoz, amikor a JavaScript globális környezet egy dokumentumkörnyezet. Felhasználói ügynökök erősen ajánlott figyelmeztetni az ilyen használatra a fejlesztői eszközökben. és kísérletezhetnek azzal, hogy InvalidAccessError kivételt dobjanak, amikor bekövetkezik.
A jövőbeli irány az, hogy csak az XMLHttpRequests-t engedélyezzük a munkaszálakban. Az üzenet erre figyelmeztető üzenetnek szánjuk.
Én is szembesültem ugyanazzal a problémával, de képes voltam megoldani az async: true beállításával. Tudom, hogy alapértelmezés szerint true, de működik, ha explicit módon írom be.
$.ajax({
async: true, // this will solve the problem
type: "POST",
url: "/Page/Method",
contentType: "application/json",
data: JSON.stringify({ ParameterName: paramValue }),
});