其实就是简单的利用defer属性,让浏览器读JS脚本的时候完全不等脚本开始读就开始读下面的图片啊,html代码了。然后让js脚本自己在那里慢慢读取完以后再执行。
给外链的js脚本添加defer="true",像下面这个这样就可以了:
<script defer="true" src="JavaScript.js" type="text/javascript"/>
特别是比较大的脚本,提高整个网页的载入速度是非常明显的。
注意defer="true"还可以用作defer="defer",似乎使用defer="defer"比较普遍,我查看一个微软的文档,好像XTHML格式的网页用defer="true"比较恰当。
另外注意,defer="true"这个东西不要在脚本程序段中调用document.write命令,因为将产生直接输出效果
如果不显式声明 defer ,则其默认值 是false
defer 和onload的执行顺序的问题
Js代码
<script language="JavaScript" type="text/javascript" defer="defer">
alert('defer里的内111容')
</script>
<script language = 'javascript' type='text/javascript'> alert('普通的script'); window.onload = function(){alert('onload里的script')}; </script>
<body> ###################################################
########################################################
########################################################
################################ <br>
<script language = 'javascript' type='text/javascript'> alert('页面的script'); </script>
◎◎◎◎◎◎◎◎◎◎◎◎◎ ◎◎◎◎◎◎◎◎◎◎◎◎◎ ◎◎◎◎◎◎◎◎◎◎◎◎◎ ◎◎◎◎◎◎◎◎◎◎◎◎◎
◎◎◎◎◎◎◎◎◎◎◎◎◎ ◎◎◎◎◎◎◎◎◎◎◎◎◎ ◎◎◎◎◎◎◎◎◎◎◎◎◎ ◎◎◎◎◎◎◎◎◎◎◎◎◎
◎◎◎◎◎◎◎◎◎◎◎◎◎ ◎◎◎◎◎◎◎◎◎◎◎◎◎ ◎◎◎◎◎◎◎◎◎◎◎◎◎ ◎◎◎◎◎◎◎◎◎◎◎◎◎
◎◎◎◎◎◎◎◎◎◎◎◎◎ ◎◎◎◎◎◎◎◎◎◎◎◎◎ </body>
普通的,边解释,边执行。
DEFER,网页脚本代码加载完后执行。
ONLOAD,所有内容(包括图片等)加载完后执行。
IE8 提示 KB927917, IE6 IE7 提示操作已中止的解决办法
见的解决方法:
1。将JS放到后面去 --- 最直接的方法
2。在JS前加入setTimeout("xxxx()",500); --- 即这段时间留给页面先加载去
3。If(document.all && document.body.readyState=="complete") --- 即等待页面加载完成再加载JS(貌似JQURY中的$(function() {});直接默认了这个方法)
4。在JS后加入defer="defer"---简单直接,正在使用