第二章 HTML中的JavaScript
目录
<script>元素
将JavaScript插入HTML的主要方法是使用<script>元素。<script>元素有下列8个属性:
- async:立即下载脚本,但不阻止其他页面动作。只对外部下载脚本文件有效。
- charset:使用src属性指定的代码字符集,很少使用。
- crossorigin:配置相关的CORS(跨源资源共享)设置。默认不使用。
- defer:表示脚本可以延迟到文档完全被解析和显示后再执行。只对外部下载文件有效。
- integrity:允许比对接收到的资源和指定的加密签名以验证子资源完整性。这个属性可以确保内容分发网络不会提供恶意内容。
- language:废弃
- src:包含要执行的代码的外部文件。
- type:代替language,表示代码块中脚本语言的内容类型(也称MIME类型)。按照惯例这个值始终都是 "text/javascript" 。如果这个值是module,则代码块会被当成ES6模块,而且只有这时候代码中才能出现import和export关键字
要包含外部文件中的JavaScript,就必须使用src属性。而使用了src属性的<script>元素不应该再在<script>和</script>标签中包含其他JavaScript代码,如果写了也只会被浏览器忽略。
defer:推迟执行脚本
注意:页面在浏览器解析到<body>的起始标签时才开始渲染。
使用defer属性的脚本会被延迟到整个页面都解析完毕后再运行,相当于告诉浏览器立即下载,但延迟执行。
标记为defer的脚本在推迟后原则上会按照原本顺序执行文件
async:异步执行脚本
从改变脚本处理方式上看,async属性和defer类似。但标记为async的脚本不能保证推迟后按照它们出现的次序执行。
使用async属性的目的是告诉浏览器,不必等脚本下载和执行完后再加载页面,同样也不必等到该异步脚本下载和执行后再加载其他脚本。正因如此,异步脚本不应该在加载期间修改DOM。
<noscript>元素
<noscript>元素为页面降级方案,被用于给不支持JavaScript的浏览器提供替代内容。
当
- 浏览器不支持脚本
- 浏览器对脚本的支持被关闭
时,浏览器将显示包含在<noscript>中的内容。