<script> 标签中的 defer 和 init 属性都可以用来控制脚本的加载和执行顺序,但是它们的具体作用有所不同。
- defer
defer 属性用于延迟脚本的执行,直到页面解析完毕。也就是说,在遇到带有 defer 属性的 <script> 标签时,浏览器会在下载脚本时不会阻塞 HTML 的解析和渲染,而是将其放在后台异步执行。
<script src="example.js" defer></script>
在上述代码中,当浏览器遇到该 <script> 标签时,会立即开始下载 example.js 文件,并且同时继续解析 HTML。等到整个文档解析完毕后,浏览器会按照 <script> 标签出现的顺序依次执行所有带有 defer 属性的脚本文件。
- init
init 属性用于指定一个函数名,在页面加载完毕之后调用该函数。这个函数必须定义在相应的 <script> 标签中,并且不能包含任何参数。
<script init="initPage"></script>
在上述代码中,当页面加载完毕后,浏览器会自动调用名为 initPage() 的函数。需要注意的是,在使用 init 属性时不能再使用其他类型的脚本延迟属性,如 async 或 defer。
总的来说,defer 和 init 属性都可以用于控制脚本的加载和执行顺序,但是它们的具体作用有所不同。其中,defer 用于延迟脚本的执行,而 init 则是在页面加载完毕之后调用指定函数。




