蘑小De菇

个人技术博客

hi,我是蘑小De菇,一名前端开发者。


记录个人对技术的理解和开发过程中遇到的问题,欢迎了解更多。

script标签

script标签

属性

  • async:异步执行脚本。立即下载脚本,但不阻塞其他页面动作,也无需等待其他脚本(不能按照页面顺序执行)
  • defer:推迟脚本执行。脚本可延迟到文档被完全解析和显示之后加载(加载顺序原则上按照他们被列出的顺序)
  • src;外部文件引用
  • type:默认text/javaScript,如果值为module,标识为es6模块,这时脚本内才可出现import、export关键字
  • integrity:对比接收到的资源和加密签名,可确保cnd不会提供恶意内容

动态脚本执行

let script = document.createElement("script")
script.src = "XXX.js"
document.head.appendChild(script)

注意事项

  1. 解释外部Javascript文件时,页面会阻塞(阻塞时间也包括下载文件时间)—> script脚本文件放到HTML body后。
  2. 如果有src属性,script标签内的script代码将会被忽略,浏览器只会下载外部文件
  3. 如果src的url指向和html不同域的话,浏览器会向url发送一个get请求,这个初始请求不受同源策略的限制,但是,返回脚本内执行的JavaScript则受限制。
  4. 浏览器会按照script标签顺序依次解释执行,上一个解释执行之后才会开始解释执行下一个(有sacyn、defer属性的除外)