<script></script>元素的属性:
async:表示立即下载脚本,但是不妨碍其他的操作,但是只使用于外部js文件。
defer:表示等到脚本延迟到文档全部被解析或者显示之后再执行,只使用于外部js文件。
src:表示外部文件的源地址
text:一般都是用text/javascript,因为她是约定俗成的同时兼容性更高。不过服务器传送js的时候一般都是使用application/x-javascript.。也可以忽略该属性,因为默认是text./Javascript。
无论怎么包含代码,只要没有defer 和async属性,程序就会自动的按照顺序进行加载。第一个script执行完然后执行第二个第三个。
script标签一般在head中。所以程序加载的时候必须加载完head中的script才去加载body中的内容。对于一些网页可能造成加载延时的状况。针对这种情况,一般吧外部引用的js文件放到body的最下面,这样就可以大大缩短js加载延时造成的浏览器一直处于空白等待状态。
延迟脚本:可以加上defer属性,告诉浏览器立即下载外部js文件(只能用在外部js文件上),延迟执行。其中包含的脚本等到网页加载到</html>的时候才去执行。
异步脚本:与延迟甲苯defer类似,只不过async脚本不能确定所异步的脚本的执行顺序。
例如:
<script text="text/javascript" src="example1.js" async />
<script text="text/javascript" src="example2.js" async />
这两个js文件执行的顺序不确定,如果是defer属性的话就是按照顺序先执行example1然后再是2文件。
一般使用外部的js文件,因为可维护性高,并且可以根据浏览器设置缓存相应的js文件
<noscript></noscript>元素:在浏览器不支持脚本或者脚本被禁用的情况下,该元素可以设置相应的提示信息。除此之外的情况浏览器都不显示noscript元素。
(2016年7月11日修改内容)
async与defer的区别和相同点:
1,二者都是异步下载编译,在html加载编译的同时,也对该二者属性的外部js文件进行下载和编译。
2,不同点在与,defer在html加载和编译只会才会去执行,并且外部js执行的顺序是按文档中的顺序执行的。但是async是谁先加载完就执行,不管html加载是否完成。
笔者认为最好用defer比较保险。
外部js文件引入的优点:
可维护性,方便后期对js进行修改,而无需修改页面。
可缓存,浏览器自动的对外部js文件进行缓存,如果两个页面引用同一个js文件,只需要下载一次就可以了。