Jeg har tilføjet logs til konsollen for at kontrollere status for forskellige variabler uden at bruge Firefox-debuggeren.
Men mange steder, hvor jeg tilføjer en console.log
i min main.js
-fil, får jeg følgende fejl i stedet for mine dejlige små håndskrevne beskeder til mig selv:
Synchronous XMLHttpRequest on the main thread is deprecated because of its deprecated because of its detriment effects to the end user's experience. For mere hjælp http://xhr.spec.whatwg.org/
Hvilke alternativer til eller wrappers for console.log
kan jeg tilføje til min kode bruge, som ikke vil forårsage denne fejl?
Er jeg "gør jeg det forkert"?
Det skete for mig, da jeg var doven og inkluderede et scripttag som en del af det indhold, der blev returneret. Som sådan:
Delvis HTML-indhold:
<div>
SOME CONTENT HERE
</div>
<script src="/scripts/script.js"></script>
Det ser ud til, i hvert fald i mit tilfælde, at hvis du returnerer HTML-indhold som dette via xhr, vil du få jQuery til at foretage et opkald for at hente dette script. Det opkald sker med et async-flag false, da det antager, at du har brug for scriptet for at fortsætte indlæsningen.
I situationer som denne ville du være bedre tjent med at kigge på en bindende ramme af en slags og bare returnere et JSON-objekt, eller afhængigt af din backend og templating kunne du ændre, hvordan du indlæser dine scripts.
Du kunne også bruge [jQuery's getScript()
] (http://api.jquery.com/jQuery.getScript/) til at hente relevante scripts. Her er en fiddle, Det'er bare en direkte kopi af jQuery eksemplet, men jeg'ser ikke nogen advarsler kastet når scripts indlæses på denne måde.
Eksempel
<script>
var url = "/scripts/script.js";
$.getScript(url);
</script>
[
][1]Advarselsmeddelelsen KAN skyldes en XMLHttpRequest-anmodning i hovedtråden med async-flaget sat til false.
https://xhr.spec.whatwg.org/#synchronous-flag:
Synkron XMLHttpRequest uden for workers er i gang med at at blive fjernet fra webplatformen, da det har skadelige virkninger for slutbrugeren's oplevelse. (Dette er en lang proces, der tager mange år.) Udviklere må ikke overgive false for async-argumentet, når JavaScript global miljø er et dokumentmiljø. Brugeragenter opfordres kraftigt til at advare om sådan brug i udviklingsværktøjer og kan eksperimentere med at kaste en InvalidAccessError undtagelse, når det forekommer.
Den fremtidige retning er kun at tillade XMLHttpRequests i arbejdstråde. Meddelelsen er tænkt som en advarsel herom.
Jeg stod også over for samme problem, men kunne løse det ved at sætte async: true. Jeg ved, at det er som standard sandt, men det virker, når jeg skriver det eksplicit
$.ajax({
async: true, // this will solve the problem
type: "POST",
url: "/Page/Method",
contentType: "application/json",
data: JSON.stringify({ ParameterName: paramValue }),
});