浏览器中的阻塞加载和异步加载

来源:互联网 发布:spring框架编程 编辑:程序博客网 时间:2024/05/21 11:14

昨天在优化项目中的一个插件,遇到一个很严重的问题。js的异步加载。

一般情况,浏览器在加载页面当中的js,都是阻塞加载的,也就是从上到下,加载完一个才继续加载下一个。我的插件是依赖jquery库才能执行的。

现在的问题是,我的页面是异步加载的,也就是插件在jquery之前就已经加载了。报错是$(...) is not function。百度之后发现很多朋友都有遇到。以前的解决方式,肯定是把jquery放到插件前面就解决了。可能我的错误比较奇葩,这种方式完全不起作用。

我的解决方式有3种:

 1.定时器,延迟加载,让这个插件在jquery之后执行就可以。setTimeout("chajian()", 1000);

 2.使用defer或者async属性,例如:<script src="~/Scripts/SelfReporting.js" defer></script>,加上 defer 等于在页面完全在入后再执行,相当于 window.onload ,但应用上比 window.onload 更灵活!使用async时,脚本相对于页面的其余部分异步地执行(当页面继续进行解析时,脚本将被执行),也就是先执行他,不过需要注意,async这个属性尽量不要在jquery引入时使用。

 3.第三种方式就是ajax了,在页面加载完之后引入这个js.例如:

         $(document).ready(function(){
             $.getScript("/Scripts/SelfReporting.js");
         });


以上纯属个人想法,不对的地方欢迎大家指正。

0 0