error:chrome控制台警告:Synchronous XMLHttpRequest on the main thread...

完整警告:Synchronous XMLHttpRequest on the main thread is deprecated because of its detrimental effects to the end user's experience. For more help, check http://xhr.spec.whatwg.org/.


大致翻译:在主线程上使用同步的XMLHttpRequest是不赞成的因为它对最终用户体验的有害影响。获得更多帮助,略


这样意思就大致明白了,在主线程上发送ajax请求,但是是同步的,那么它就有造成线程迟缓甚至中断的的潜在可能,如果不是必须完成这个步骤才能进入别的地方的话,这样的做法是很危险的!


当然,这只是个警告,并不是错误,程序可以正常运行,危险只是潜在的。


但是对于一个有极致要求的人,怎么可能容忍黄色警告的出现呢?必须解决它!


在html5以前,JavaScript是完全的单线程方式,主线程之外不存在其他线程。但在Html5中增加了Worker对象,每个Worker运行在一个独立的线程中,Worker线程被阻塞一般是不会影响主线程和浏览器的。因此,如果非要使用同步的Ajax(这种情况应该很少见),那就放到Worker线程中吧,尽量不要放到主线程里。


真实情况:我们根本无需增加思想负担。了解什么work、新的api、和多线程消息机制等!我们解决它,只需要遵循以下2点一般就可以解决


1.AJAX 请求 变为异步:这也是ajax默认方式,不然用ajax也失去了本质意义,同步很少


async: false   // 轻轻方式-异步
2.接受的请求,返回一个html代码段,里面包含了<script src="/scripts/script.js"></script>  这样脚本文件引用! 才会出现这种警告!


<div> 
 SOME CONTENT HERE
</div>
<script src="/scripts/script.js"></script> 
备注:这样的情况很多,比如你要请求一段html 用于局部刷新显示到页面,或者请求后台模版,而这段html里 还有<script scr="xx.js"></script> 引用,就会出险上述警告


解决办法:依据第二点


1.请将 <script src="/scripts/script.js"></script> 提前写入前台页面,从发送过来的HTML 代码段剥离出去,亲测有效!国外网友也是这样总结!


2.将引用的外部js脚本文件,写到dom里面,以


<script type="text/javascript">


console.log('我是外部js内容,现在通过script 标签写到到html里');


</script>


亲测有效!


总之:如果请求HTML代码段或者HTML模版,不要直接引入外部js的方式就可以,有很多技巧,大家自行发挥,还要2种方式可以解决;想好了给我留言 哈哈哈!
提示你: $.getScript('jsUrl', function() {
            // console.log(jsUrl[i] + " 加载完毕...");
        });  此法可完美hold住,又不耽误继续引用外部js脚本,吼吼吼!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值