跳到主要内容

HTML script 标签

<script> 标签是 HTML 中用于定义客户端脚本的标签。它通常用于嵌入 JavaScript 代码,或引用外部 JavaScript 文件。通过 <script> 标签,你可以实现网页的动态效果和交互功能。

这个标签最初由 Netscape 创造,并在 Netscape Navigator 2 中首次实现,后来被正式加入到 HTML 规范中。

基本语法

<script> 标签用于将 JavaScript 代码嵌入到 HTML 页面中。通常,你会在 <head><body> 中使用它来插入脚本。

基本的用法如下:

内嵌脚本

你可以直接在 <script> 标签内编写 JavaScript 代码:

<script>
alert("你好,世界!");
</script>

在上面的例子中,页面加载时会弹出一个对话框,显示 "你好,世界!"。

显示效果:

引用外部脚本

你也可以通过 src 属性引用外部的 JavaScript 文件:

<script src="script.js"></script>

在这种情况下,浏览器会加载并执行 script.js 文件中的 JavaScript 代码。

type 属性

在 HTML5 中,<script> 标签的 type 属性已变得不再必需,浏览器会自动识别 JavaScript 脚本类型。早期的 HTML 中,type="text/javascript" 用于声明脚本类型:

<script type="text/javascript">
alert("你好,世界!");
</script>

不过,在 HTML5 中,你可以省略 type 属性,直接使用默认的 JavaScript 类型:

<script>
alert("你好,世界!");
</script>

asyncdefer 属性

当你使用 <script> 标签加载外部 JavaScript 文件时,asyncdefer 属性可以帮助你控制脚本的加载和执行顺序。

async 属性

async 属性告诉浏览器异步加载脚本,意味着浏览器会在下载脚本的同时继续解析 HTML 页面。下载完脚本后,脚本会立即执行,这可能会打断 HTML 的解析。

<script src="script.js" async></script>

defer 属性

defer 属性则是延迟执行脚本,直到整个 HTML 文档解析完成之后再执行。这是用于确保脚本不会阻止页面的其他内容加载。

<script src="script.js" defer></script>

使用 defer 属性时,脚本会按照在文档中的顺序执行,且只有在页面完全加载后才会执行。

放置 <script> 标签的位置

放置在 <head>

<script> 标签放在 <head> 标签中时,脚本会在 HTML 页面加载之前执行。这可能会影响页面的渲染速度,因此大多数开发者倾向于将脚本放在文档的底部,以提高页面加载速度。

<head>
<script src="script.js"></script>
</head>

放置在 <body> 底部

<script> 标签放在 <body> 底部可以确保脚本在 HTML 内容完全加载之后才会执行,从而提高页面的加载速度。

<body>
<script src="script.js"></script>
</body>

<script> 属性列表

属性描述
asyncasync指定脚本与解析页面并行下载,并在可用时立即执行(在解析完成之前)
注意:仅适用于外部脚本
crossoriginanonymous
use-credentials
将请求的模式设置为 HTTP CORS 请求
deferdefer指定与解析页面并行下载脚本,并在页面解析完成后执行
注意:仅适用于外部脚本
integrityfilehash允许浏览器检查获取的脚本,以确保如果源已被操纵,则永远不会加载代码
nomoduleTrue False指定脚本不应在支持 ES2015 模块的浏览器中执行
referrerpolicyno-referrer
no-referrer-when-downgrade
origin
origin-when-cross-origin
same-origin
strict-origin
strict-origin-when-cross-origin
unsafe-url
指定在获取脚本时要发送的引荐来源信息
srcURL指定外部脚本文件的 URL
typescripttype指定脚本的媒体类型

小结

HTML5 中的 <script> 标签是网页实现动态效果和交互功能的核心工具。你可以通过它嵌入 JavaScript 代码或引用外部脚本。了解如何使用 asyncdefer 属性,可以帮助你优化网页加载速度,使页面在加载时更流畅。虽然在 HTML5 中不再强制要求 type 属性,但仍然需要理解其历史背景,确保在需要时能够使用正确的语法。在开发时,根据页面需求选择合适的脚本位置和加载方式,可以有效提高页面性能和用户体验。