默认情况javascript是同步加载的,也就是javascript的加载时阻塞的,后面的元素要等待javascript加载完毕后才能进行再加载,对于一些意义不是很大的javascript,如果放在页头会导致加载很慢的话,是会严重影响用户体验的。 所以,那么有些不涉及dom操作的脚本可以延迟加载。
1.使用<script>标签的defer属性。
如:<script type="text/javascript" src="example.js" defer="defer"></script>。W3C 说进IE支持该属性。
2.HTML5的async属性。
async属性仅适合外部脚本。
3.动态创建<script>标签。
1 <script> 2 /* 3 这里是必须要先加载的代码 4 */ 5 var script = document.createElement('script'); 6 script.type = 'text/javascript'; 7 script.src = 'script/example.js'; 8 var elem = document.getElementsByTagName('script')[0]; 9 elem.parentNode.insertBefore(script,elem); 10 </script>
4.利用ajax异步加载。
原理是利用ajax通过responseText获得脚本内容,然后同伙eval()来运行。
5.异步iframe,这个自己还不大不理解,先记录。