defer:可选。表示脚本可以延迟到文档完全被解析和显示之后再执行。只对外部脚本文件有效。
脚本会被延迟到整个页面都解析完毕后再运行。因此,在<script>
元素中设置defer
属性,相当于告诉浏览器立即下载,但延迟执行。
在使用行内JavaScript代码时,要注意代码中不能出现字符串</script>
。
浏览器解析行内脚本的方式决定了它在看到字符串</script>
时,会将其当成结束的</script>
标签。想避免这个问题,只需要转义字符“\”即可
<script> function sayScript() { console.log("<\/script>"); } </script>
现代Web应用程序通常将所有JavaScript引用放在<body>
元素中的页面内容后面
<!DOCTYPE html> <html> <head> <title>Example HTML Page</title> </head> <body> <!-- 这里是页面内容 --> <script src="example1.js"></script> <script src="example2.js"></script> </body> </html>
最初的文档模式有两种:混杂模式(quirks mode)和标准模式(standards mode)。
前者让IE像IE5一样(支持一些非标准的特性),后者让IE具有兼容标准的行为。虽然这两种模式的主要区别只体现在通过CSS渲染的内容方面,但对JavaScript也有一些关联影响,或称为副作用。
随着浏览器的普遍实现,又出现了第三种文档模式:准标准模式(almost standards mode)。这种模式下的浏览器支持很多标准的特性,但是没有标准规定得那么严格。主要区别在于如何对待图片元素周围的空白(在表格中使用图片时最明显)。
混杂模式在所有浏览器中都以省略文档开头的doctype
声明作为开关。
标准模式通过下列几种文档类型声明开启:
<!-- HTML 4.01 Strict --> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <!-- XHTML 1.0 Strict --> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <!-- HTML5 --> <!DOCTYPE html>
<noscript>
元素可以包含任何可以出现在<body>
中的HTML元素,<script>
除外。在下列两种情况下,浏览器将显示包含在<noscript>
中的内容: