web文档引用js脚本有4种方式:内联(script标签对,没有src)、外部引用(src)、与html混合(作为文档节点的一个属性)、url调用。
script标签对默认使用type=“text/javascript”,如果使用type=“text/vbscript”只支持ie浏览器,老的浏览器支持language=“javascript”(已经被废弃);
当web浏览器解析script的时候,如果是一个不识别的type属性,该标签对可以用来存储信息;
当html解析器遇到script元素的时候,默认必须先执行script脚本,再恢复文档的解析和渲染。
普通的script标签与defer、async的区别:
第一、html解析器遇到script的元素会停止对文档的解析,直到脚本执行完毕,但是defer与async不同,文档解析不会停止;
第二、defer是在文档解析的同时下载脚本,文档解析完成解析脚本;多个defer执行顺序是根据它们在文档的顺序;(ie9以下不一定)
第三、async是在解析文档的同时下载脚本,当脚本下载完成时停止文档解析,立即执行脚本,脚本执行完毕再解析文档,执行顺序以下载完成为先,哪个async先下载完成,先执行哪个。
第四、defer与async在内联脚本中不起作用,defer与async同时出现,defer会被忽略。defer与sync一般与src共同起作用。