Firefox hata ayıklayıcısını kullanmadan farklı değişkenlerin durumunu kontrol etmek için konsola günlükler ekliyordum.
Ancak, main.js
dosyama bir console.log
eklediğim birçok yerde, kendime yazdığım sevimli küçük el yazısı mesajlarım yerine aşağıdaki hatayı alıyorum:
Ana iş parçacığı üzerinde senkronize XMLHttpRequest, son kullanıcının deneyimine zararlı etkileri nedeniyle kullanımdan kaldırılmıştır. Daha fazla yardım için http://xhr.spec.whatwg.org/
Bu hataya neden olmayacak console.log
için hangi alternatifleri veya sarmalayıcıları kod kullanımıma ekleyebilirim?
Yanlış mı yapıyorum?
Bu durum, tembellik edip döndürülen içeriğin bir parçası olarak bir komut dosyası etiketi eklediğimde başıma geldi. Bu şekilde:
Kısmi HTML İçeriği:
<div>
SOME CONTENT HERE
</div>
<script src="/scripts/script.js"></script>
En azından benim durumumda, xhr aracılığıyla bu şekilde HTML içeriği döndürürseniz, jQuery'nin bu komut dosyasını almak için bir çağrı yapmasına neden olursunuz. Bu çağrı, yüklemeye devam etmek için betiğe ihtiyacınız olduğunu varsaydığından async flag false ile gerçekleşir.
Bu gibi durumlarda, bir tür bağlama çerçevesine bakarak ve sadece bir JSON nesnesi döndürerek daha iyi hizmet verebilirsiniz veya arka ucunuza ve şablonunuza bağlı olarak komut dosyalarınızı nasıl yüklediğinizi değiştirebilirsiniz.
İlgili komut dosyalarını almak için jQuery'nin getScript()
özelliğini de kullanabilirsiniz. Burada jQuery örneğinin düz bir kopyası var, ancak komut dosyaları bu şekilde yüklendiğinde atılan herhangi bir uyarı görmüyorum.
Örnek
<script>
var url = "/scripts/script.js";
$.getScript(url);
</script>
[
][1]Uyarı iletisi, async bayrağı false olarak ayarlanmış ana iş parçacığı içindeki bir XMLHttpRequest isteğinden kaynaklanıyor OLABİLİR.
https://xhr.spec.whatwg.org/#synchronous-flag:
Çalışanların dışındaki senkronize XMLHttpRequest 'ye zararlı etkileri olduğu için web platformundan kaldırılıyor. son kullanıcı deneyimi. (Bu, çok zaman alan uzun bir süreçtir. yıllar.) Geliştiriciler, async argümanı için false değerini geçmemelidir. JavaScript global ortamı bir belge ortamıdır. Kullanıcı aracıları geliştirici araçlarında bu tür kullanımlar hakkında uyarıda bulunmaları şiddetle tavsiye edilir ve aşağıdaki durumlarda bir InvalidAccessError istisnası atmayı deneyebilir meydana gelir.
Gelecekteki yönelim, yalnızca çalışan iş parçacıklarında XMLHttpRequests'e izin vermektir. Mesajın bu yönde bir uyarı olması amaçlanmıştır.
Ben de aynı sorunla karşılaşıyordum ancak async: true koyarak sorunu çözebildim. Varsayılan olarak true olduğunu biliyorum ama açıkça yazdığımda çalışıyor
$.ajax({
async: true, // this will solve the problem
type: "POST",
url: "/Page/Method",
contentType: "application/json",
data: JSON.stringify({ ParameterName: paramValue }),
});