Ik heb logs toegevoegd aan de console om de status van verschillende variabelen te controleren zonder de debugger van Firefox te gebruiken.
Echter, op veel plaatsen waar ik een console.log
toevoeg in mijn main.js
bestand, krijg ik de volgende foutmelding in plaats van mijn mooie kleine handgeschreven berichtjes aan mezelf:
Synchronous XMLHttpRequest on the main thread is deprecated because of its detrimental effects to the end user's experience. Voor meer hulp http://xhr.spec.whatwg.org/
Welke alternatieven voor of wrappers voor console.log
kan ik toevoegen om mijn code te gebruiken die deze fout niet zal veroorzaken?
Doe ik het verkeerd"?
Dit overkwam mij toen ik lui was en een scripttag opnam als onderdeel van de inhoud die werd teruggestuurd. Als zodanig:
Gedeeltelijke HTML-inhoud:
<div>
SOME CONTENT HERE
</div>
<script src="/scripts/script.js"></script>
Het blijkt, althans in mijn geval, dat als je HTML-inhoud terug te keren als dat via xhr, zul je ervoor zorgen dat jQuery om een oproep te doen om dat script te krijgen. Die oproep gebeurt met een async vlag false omdat het ervan uitgaat dat je het script nodig hebt om te blijven laden.
In situaties als deze kun je beter kijken naar een of ander bindend framework en gewoon een JSON object retourneren, of afhankelijk van je backend en templating kun je veranderen hoe je je scripts laadt.
Je zou ook jQuery's getScript()
kunnen gebruiken om relevante scripts te pakken. Hier is een fiddle, Het's gewoon een rechte kopie van het jQuery voorbeeld, maar ik'ben niet zien geen waarschuwingen gegooid wanneer scripts worden geladen op die manier.
Exemplaar
<script>
var url = "/scripts/script.js";
$.getScript(url);
</script>
[
][1]Het waarschuwingsbericht KAN het gevolg zijn van een XMLHttpRequest verzoek binnen de hoofdthread met de async flag op false gezet.
https://xhr.spec.whatwg.org/#synchronous-flag:
Synchronous XMLHttpRequest outside of workers is in the process of te worden verwijderd van het webplatform omdat het nadelige gevolgen heeft voor de eindgebruiker's ervaring. (Dit is een lang proces dat vele jaren in beslag neemt). Ontwikkelaars mogen geen false doorgeven voor het async argument wanneer de JavaScript globale omgeving een document omgeving is. Gebruikersagenten worden sterk aangemoedigd om te waarschuwen voor dergelijk gebruik in ontwikkelaarshulpmiddelen en mogen experimenteren met het gooien van een InvalidAccessError exception wanneer het zich voordoet.
De toekomstige richting is om XMLHttpRequests alleen toe te staan in worker threads. Het bericht is bedoeld als een waarschuwing in die zin.
Ik werd ook geconfronteerd met hetzelfde probleem, maar in staat om het te verhelpen door het zetten van async: true. Ik weet dat het standaard true is maar het werkt als ik het expliciet schrijf
$.ajax({
async: true, // this will solve the problem
type: "POST",
url: "/Page/Method",
contentType: "application/json",
data: JSON.stringify({ ParameterName: paramValue }),
});