script元素可以包括您的页面中的脚本,在文档中内联定义或引用外部文件。
最常用的脚本类型是JavaScript。
对每个脚本使用一个script元素。
script元素具有局部属性:type,src,defer,async,charset。
script元素的开始和结束标记是必需的;即使引用外部JavaScript库时,也不允许使用自关闭标记。
在HTML5中,type属性是可选的。在HTML5中添加了async和defer属性。
HTML页面中的JavaScript语句包含内联脚本。
This is a test.
Visit www.sxiaw.com
默认情况下,脚本在页面中遇到时立即执行。您通常使用head元素中的script元素,但您可以在HTML文档中的任何位置使用它。
您可以将脚本分成单独的文件,并使用script元素加载它们。
假设我们有一个名为simple.js的文件,其内容如下面代码所示。
document.write("This is from the external script");
该文件包含单个语句。然后,我们可以使用script元素中的src属性来引用此文件。
如果使用src属性,则脚本元素必须为空。您不能使用相同的脚本元素来定义内联脚本和外部脚本。
以下代码显示如何使用外部脚本。
This is a test.
Visit www.sxiaw.com
src属性的值是要加载的脚本文件的URL。simple.js文件与HTML文件位于同一目录中。
需要脚本元素的结束标记,即使元素没有内容。如果在引用外部脚本时使用自动关闭标记,浏览器将忽略该元素,而不加载文件。
你可以通过使用async和defer属性来控制脚本的执行。
defer属性指示浏览器在页面加载和解析之前不执行脚本。
要了解defer属性的好处,让我们看看它解决的问题。
假设simple2.js脚本文件具有如下所列的单个语句。
document.getElementById("myID").innerText = "myValue";
当此脚本运行时,它将找到一个id属性值为myID的元素,并将该元素的内部文本更改为myValue。
以下HTML文档使用script元素引用脚本文件。
This is a test.
浏览器遇到script元素时的默认行为是停止处理HTML文档时,加载脚本文件并执行其内容。
这意味着浏览器在解析其余HTML之前加载并执行simple2.js中的语句,并发现了p元素。
脚本找不到所需的元素,因此不应用任何更改。
脚本完成后,浏览器继续解析HTML,并找到p元素。
要解决这个问题,请将script元素放在文档的末尾。
This is a test.
Visit www.sxiaw.com
在HTML5中,您可以通过使用defer属性来实现相同的效果。当浏览器遇到具有defer属性的脚本时,它会阻止加载和执行脚本,直到HTML文档中的所有元素都已解析为止。
This is a test.
www.sxiaw.com
您可以仅对外部脚本文件使用defer属性。它不工作的内联脚本。
遇到script元素时的默认浏览器行为是在加载和执行脚本时停止处理页面。
每个script元素按照它们定义的顺序同步执行,当脚本加载和运行时,不会发生其他事情。
您可以使用async属性来提高性能。例如,可以异步地执行不与HTML文档中的元素交互的自包含脚本。
当您使用async属性时,浏览器会异步加载和执行脚本,同时继续解析HTML中的其他元素,包括其他脚本元素。
以下代码显示了应用于脚本元素的async属性。
This is a test.
www.sxiaw.com
具有async属性的脚本可能不会按照它们的定义顺序执行。
这使得async特性不适用于依赖于由其他脚本定义的函数或值的脚本。
noscript元素允许您向其显示内容已禁用JavaScript或正在使用浏览器的用户不支持它。
noscript元素显示内容和说明,除非他们启用JavaScript,否则他们不能使用您的网站或网页。
以下代码显示了设置为显示简单消息的noscript元素。
Javascript is required!
You cannot use this page without Javascript
This is a test.
Visit www.sxiaw.com
页面的其余部分正常处理,内容元素仍然显示。
您可以向页面添加多个noscript元素。
如果不支持JavaScript,您还可以将用户的浏览器重定向到其他网址,方法是将meta元素放在noscript元素中。
This is a test.
www.sxiaw.com
当不支持JavaScript或禁用JavaScript的浏览器时,这会将用户重定向到www.sxiaw.com网站。