JavaScript
1.核心 ECMAScript
2. 文档对象模型(DOM)
3. 浏览器对象模型(BOM)
文档对象模型(DOM,Document Object Model)是一个应用编程接口(API),用于在 HTML 中使用扩 展的 XML。
IE3 和 Netscape Navigator 3 提供了浏览器对象模型(BOM) API,用于支持访问和操作浏览器的窗口。
JavaScript 是一门用来与网页交互的脚本语言,包含以下三个组成部分。
ECMAScript:由 ECMA-262 定义并提供核心功能。
文档对象模型(DOM):提供与网页内容交互的方法和接口。
浏览器对象模型(BOM):提供与浏览器交互的方法和接口。
html中的js
<script>元素
-
async:可选。表示应该立即开始下载脚本,但不能阻止其他页面动作,比如下载资源或等待其他脚本加载。只对外部脚本文件有效。
-
charset:可选。使用 src 属性指定的代码字符集。这个属性很少使用,因为大多数浏览器不在乎它的值。
-
crossorigin:可选。配置相关请求的CORS(跨源资源共享)设置。默认不使用CORS。crossorigin="anonymous"配置文件请求不必设置凭据标志。crossorigin="use-credentials"设置凭据标志,意味着出站请求会包含凭据。
-
defer:可选。表示脚本可以延迟到文档完全被解析和显示之后再执行。只对外部脚本文件有效。在 IE7及更早的版本中,对行内脚本也可以指定这个属性。
-
integrity:可选。允许比对接收到的资源和指定的加密签名以验证子资源完整性(SRI,SubresourceIntegrity)。如果接收到的资源的签名与这个属性指定的签名不匹配,则页面会报错,脚本不会执行。这个属性可以用于确保内容分发网络(CDN,ContentDelivery Network)不会提供恶意内容。
-
src:可选。表示包含要执行的代码的外部文件。
按照惯例,外部 JavaScript 文件的扩展名是.js。这不是必需的,因为浏览器不会检查所包含 JavaScript 文件的扩展名。这就为使用服务器端脚本语言动态生成 JavaScript 代码,或者在浏览器中将 JavaScript扩展语言(如TypeScript,或React的 JSX)转译为JavaScript提供了可能性。不过要注意,服务器经常会根据文件扩展来确定响应的正确 MIME 类型。如果不打算使用.js 扩展名,一定要确保服务器能返回正确的 MIME 类型。
另外,使用了 src 属性的<script>元素不应该再在<script>和</script>标签中再包含其他JavaScript 代码。如果两者都提供的话,则浏览器只会下载并执行脚本文件,从而忽略行内代码。
不管包含的是什么代码,浏览器都会按照<\script>在页面中出现的顺序依次解释它们,前提是它们没有使用 defer 和 async 属性。第二个元素的代码解释完毕才能开始解释,第三个则必须等第二个解释完,以此类推。
与 defer 不同的是,标记为 async 的脚本并不保证能按照它们出现的次序执行,
<noscript>元素可以包含任何可以出现在<body>中的 HTML 元素,<script>除外。在下列两种
情况下,浏览器将显示包含在<noscript>中的内容:
浏览器不支持脚本;
浏览器对脚本的支持被关闭。
任何一个条件被满足,包含在<noscript>中的内容就会被渲染。否则,浏览器不会渲染<noscript>
中的内容。
总结
要包含外部 JavaScript 文件,必须将 src 属性设置为要包含文件的 URL。文件可以跟网页在同
一台服务器上,也可以位于完全不同的域。
所有<script>元素会依照它们在网页中出现的次序被解释。在不使用 defer 和 async 属性的
情况下,包含在<script>元素中的代码必须严格按次序解释。
对不推迟执行的脚本,浏览器必须解释完位于<script>元素中的代码,然后才能继续渲染页面
的剩余部分。为此,通常应该把<script>元素放到页面末尾,介于主内容之后及标签
之前。
可以使用 defer 属性把脚本推迟到文档渲染完毕后再执行。推迟的脚本原则上按照它们被列出
的次序执行。
可以使用 async 属性表示脚本不需要等待其他脚本,同时也不阻塞文档渲染,即异步加载。异
步脚本不能保证按照它们在页面中出现的次序执行。
通过使用<noscript>元素,可以指定在浏览器不支持脚本时显示的内容。如果浏览器支持并启
用脚本,则<noscript>元素中的任何内容都不会被渲染。