script

<script>

HTML<script> 元素用于嵌入或引用可执行脚本。

内容类别
允许的内容动态脚本,如文本/ JavaScript。
标记遗漏没有,起始和结束标签都是强制性的。
允许父母任何接受 metadata content 元素,或任何接受 phrasing content 的元素。
允许ARIA角色没有
DOM界面HTMLScriptElement

属性

这个元素包含全局属性。

asyncHTML5该布尔属性指示浏览器是否在允许的情况下异步执行该脚本。该属性对于内联脚本无作用 (即没有src属性的脚本)。

动态插入的脚本默认情况下是异步执行的,所以打开同步执行(即脚本以加载的顺序执行)设置async=false

指示表示的脚本的类型。此属性的值将在以下类别之一中:

  • 省略或JavaScript MIME类型:对于符合HTML5的浏览器,这表示脚本是JavaScript。HTML5规范敦促作者省略该属性,而不是提供冗余的MIME类型。在早期的浏览器中,这标识了嵌入或导入(通过src属性)代码的脚本语言。规范中列出了 JavaScript MIME类型。

  • module**:** HTML5对于符合HTML5的浏览器,代码被视为JavaScript模块。脚本内容的处理不受charsetdefer属性的影响。有关使用的信息module,请参见深度:模块中的ES6。

  • 任何其他值或MIME类型:嵌入式内容被视为不会被浏览器处理的数据块。该src属性将被忽略。

请注意,在Firefox中,您可以使用高级功能,例如稍后JS版本中的let语句和其他功能type=application/javascript;version=1.8。但是,要小心,因为这是一个非标准的功能,这很可能会打破对其他浏览器的支持,特别是基于Chromium的浏览器。

关于如何包含异国情调的编程语言,请阅读关于Rosetta。

已弃用的属性

languagetype属性一样,此属性标识正在使用的脚本语言。type然而,与属性不同的是,这个属性的可能值从未标准化。type应该使用该属性来代替。

注意

浏览器继续解析页面之前,立即获取并执行没有asyncdefer属性的脚本以及内联脚本。

该脚本应该与text/javascriptMIME类型一起提供,但是浏览器是宽松的,只有在脚本使用图像类型(image/*),视频类型(video/*),音频(audio/*)类型或者text/csv。如果脚本被阻塞,error则发送给元素,否则load发送事件。

例子

<!-- HTML4 and (x)HTML --> <script type="text/javascript" src="javascript.js"></script> <!-- HTML5 --> <script src="javascript.js"></script>

规范

SpecificationStatusComments
HTML Living StandardThe definition of '<script>' in that specification.Living StandardAdds the module type
HTML5The definition of '<script>' in that specification.Recommendation
HTML 4.01 SpecificationThe definition of '<script>' in that specification.Recommendation
Subresource IntegrityThe definition of '<script>' in that specification.RecommendationAdds the integrity attribute.

浏览器兼容性

FeatureChromeEdgeFirefoxInternet ExplorerOperaSafari
Basic Support1(Yes)11(Yes)(Yes)(Yes)
async1(Yes)1(Yes)(Yes)(Yes)
crossorigin30(Yes)13No12.5(Yes)2
defer(Yes)(Yes)3.53104No(Yes)
integrity45No43No?No5
language1(Yes)1(Yes)(Yes)(Yes)
moduleNoNoNoNoNo(Yes)
nomodule(Yes)No(Yes)6NoNoNo
src1(Yes)1(Yes)(Yes)(Yes)
text1(Yes)1(Yes)(Yes)(Yes)
type1(Yes)1(Yes)(Yes)(Yes)

FeatureAndroidChrome for AndroidEdge mobileFirefox for AndroidIE mobileOpera AndroidiOS Safari
Basic Support(Yes)(Yes)(Yes)11(Yes)(Yes)(Yes)
async(Yes)(Yes)(Yes)1(Yes)(Yes)(Yes)
crossorigin(Yes)(Yes)?13No??
defer(Yes)(Yes)(Yes)1.0No?(Yes)
integrity4545No43No?No
language(Yes)(Yes)(Yes)1(Yes)(Yes)(Yes)
moduleNoNoNoNoNoNo(Yes)
nomodule(Yes)(Yes)No(Yes)6No?No
src(Yes)(Yes)(Yes)1(Yes)(Yes)(Yes)
text(Yes)(Yes)(Yes)1(Yes)(Yes)(Yes)
type(Yes)(Yes)(Yes)1(Yes)(Yes)(Yes)