说到JavaScript的使用,就不得不提到HTML了,在HTML页面中引入JavaScript脚本的基本都是通过script属性,而script引入的的方式却有两种,分为嵌入脚本和外部脚本
script标签本身就定义了六个属性:
- async: 表示应该立即下载脚本,但不妨碍页面的其他操作,只针对外部文件有效
<!DOCTYPE html>
<html>
<head>
<script async scr="example1.js"></script>
<script async scr="example2.js"></script>
</head>
<body>
//这里会立即下载文件,但脚本的执行顺序不确定,因此保证两个脚本互不依赖十分重要,而且不能再加载期间修改DOM
</body>
</html>
- defer: 表示脚本可以延迟到文档被完全解析和显示之后再执行,只针对外部文件有效
<!DOCTYPE html>
<html>
<head>
<script defer="defer" scr="example1.js"></script>
<script defer="defer" scr="example2.js"></script>
</head>
<body>
//这里虽然把标签放头部,但依然等浏览器遇到/html才开始执行脚本代码,且也是按照顺序执行脚本代码,但最后只包含一个脚本代码
</body>
</html>
- charset: 指定代码的字符集
- language: 已废弃
- scr: 表示包含要执行的外部文件
- type: 表示编写代码使用的脚本语言的内容类型,通常是text/JavaScript
注意:
1.如果导入外部文件并且还存在嵌入的代码,则只会下载并执行外部脚本文件,内嵌代码被忽略
- script标签和img标签一样可以跨域请求JavaScript文件
- 只要不包含defer和async属性,就会按照出现的先后顺序依次解析
- 标签如果放在头部则意味着必须等到所以JavaScript代码都被下载解析执行才能开始呈现内容,但这样会导致有一段时间的空白期,所以一般放在body上,这样解析JavaScript代码前,网页的内容就已经呈现在浏览器上了
- noscript可以设置当浏览器不支持JavaScript或者被禁用的情况下显示的内容,但如果有脚本文件执行,这个标签不会显示任何内容
文档模式:
文档模式是通过文档类型(doctype)切换实现的,最初的两种文档类型是:混杂模式(quirks mode)和标准模式(standards mode)
混杂模式会让IE的行为与早期的IE5相同,标准模式则让IE的行为接近标准行为,主要影响css的呈现