Script元素

直接在HTML页面中使用script元素, 这是在NN2.0浏览器上的最先实现.

目前有以下属性

  • async:字面意思异步,表示立即下载js,但不阻塞页面其他动作(如资源下载或等待其他脚本)。只对外链js有效
  • charset: 现阶段几乎不用设置
  • crossorigin:默认不使用,值为anonymous表示不使用凭据,为use-credentials请求则出现凭据
  • defer:Js延迟到页面解析完成再执行,只对外链JS有效(IE7及之前可对行内JS有效,但谁还用IE?)
  • intergrity: 签名值,接受到的资源签名值和此签名值一致,则保证安全,否则报错不执行
  • language:废弃
  • src: 脚本资源地址,如果script有了src属性,script内的行内js语句都不会被执行
  • type: 通常我们都认为其默认值为text/javascript,但是这个默认值已经废弃,无需填写。除非值填写为text=module会被解析成ES6模块,否则填其他非常规值都会不解析不执行,以往开发者会利用这个特征可以做成模板

标签位置

如果过没有做其他处理,一般写在前面,可减少白屏

推迟执行脚本

defer: 立即下载,但是延迟执行(DOMContentLoaded之前)。注意,如果对多个script设置了defer, 不一定总能按顺序依次延迟执行

异步执行脚本

async:load前执行,但是可能DOMContentLoaded之后执行,async一定不保证多个script的次序

动态加载脚本

动态创建script并插入到文档

XHTML中的变化

废弃的语法

行内还是外链

通常推荐外链js,主要是

  • 可维护性
  • 缓存
  • 适应未来

文档模式

略,只用<!DOCTYPE HTML>即可

noscript元素

只有以下情况会显示noscript中的内容

  • 浏览器不支持脚本
  • 浏览器对脚本的支持被关闭

本章完