HTML 4.01 的script属性
charset: 可选。指定src引入代码的字符集,大多数浏览器忽略该值。
defer: boolean, 可选。延迟脚本执行,相当于将script标签放入页面body标签的底部,js脚本会在document的DOMContentLoaded之前执行。除IE和较新版本的Firefox外,其他浏览器并未支持。
language: 已废弃。大部分浏览器会忽略该值。
src: 可选。指定引入的外部代码文件,不限制后缀名。
type: 必选。指定脚本的内容类型(MIME类型)。现实中通常不指定该值也可以,浏览器会默认当作text/javascript类型来解释执行。
HTML5中的script属性:
script 标签在HTML5中除了具备HTML5新标准定义的属性以外,和HTML4.01相比移除了language属性,修改了type属性为可选的(默认text/javascript),并新增了一个属性async。
async :boolean, 属性的作用,定义脚本是否异步执行,取值true或false。
如果 async 设为 true ,会忽略 defer 属性。
异步执行的 js 文件被假定为不使用 document.write() 向加载中的 document 写入内容,因此不要在 异步执行的 js 文件的加载执行过程中使用 document.write()
除了 script 标签属性外,页面引入 js 文件的方式影响其加载执行方式:
window.onload 事件会在 js 文件加载完毕才触发(即使是异步加载,还有 iframe 中网页的加载 )
不管是script 标签直接嵌入代码还是引入js文件, script 标签的 js 代码都是解析一段然后执行一段,因此不要出现类似 在前一个script 标签的代码中使用 变量,在后一个标签的代码中定义变量 这种错误的做法。
=====================================================
1、
//同步加载执行的代码
2、
//同步加载执行xx.js中的代码
因为是同步的,可以使用document.wirte(), 比如 jsonp ,嵌入一个 js 文件,从服务器取数据并用服务器脚本输出 js 代码向 document 中写入内容.
3、
document.write('
4、
xx.js中有下面代码:
document.write('