11# 资源加载:onload 和 onerror
22
3- 浏览器允许跟踪外部资源的加载 —— 脚本, iframes, 图像等。
3+ 浏览器允许跟踪外部资源的加载 —— 脚本、 iframes、 图像等。
44
55它有两个事件:
66
@@ -20,10 +20,10 @@ script.src = "my.js";
2020document .head .append (script);
2121```
2222
23- ... 但如何运行声明在脚本中的函数?我们需要等到脚本被加载后才能调用它。
23+ …… 但如何运行声明在脚本中的函数?我们需要等到脚本被加载后才能调用它。
2424
2525``` smart
26- 对于我们自己的脚本,可以使用 [JavaScript modules](info:modules),但它们并没有被第三方库采用 。
26+ 对于我们自己的脚本,可以使用 [JavaScript modules](info:modules),但它们并没有被第三方库广泛采用 。
2727```
2828
2929### script.onload
@@ -47,9 +47,9 @@ script.onload = function() {
4747*/ ! *
4848```
4949
50- 因此,在 ` onload ` 中我们使用脚本中的变量 、运行函数等。
50+ 因此,在 ` onload ` 中我们可以使用脚本中的变量 、运行函数等。
5151
52- ... 如果加载失败怎么办?比如,没有这样的脚本(错误 404)或者服务器宕机(不可用)。
52+ …… 如果加载失败怎么办?比如,没有这样的脚本(错误 404)或者服务器宕机(不可用)。
5353
5454### script.onerror
5555
@@ -99,7 +99,7 @@ img.onerror = function() {
9999但也有一些注意事项:
100100
101101- 对于大部分资源来说,当他们被添加到文档时就开始加载。但是 ` <img> ` 是个例外。它要等到获取 src ` (*) ` 属性后才开始加载。
102- - 对于 ` <iframe> ` 来说,只有当 iframe 加载完成,不论时成功还是失败 ,` iframe.onload ` 事件才会触发 ,
102+ - 对于 ` <iframe> ` 来说,只要 iframe 加载完成,不论成功还是失败 ,` iframe.onload ` 事件都会触发 ,
103103
104104这是出于历史遗留原因。
105105
@@ -159,7 +159,7 @@ Script error.
159159
160160我们为什么需要细节信息?
161161
162- 因为有很多服务(我们也可以自己建立)来监听 ` window.onerror ` ,在服务器上保存错误信息,并分析它们,以提供用户相应的错误页面。这很棒,因为我们可以看到由用户触发的真实错误。但是我们不能获得来自其他域名的脚本的任何错误信息。
162+ 因为有很多服务(我们也可以自己建立)监听 ` window.onerror ` ,在服务器上保存错误信息,并分析它们,以提供用户相应的错误页面。这很棒,因为我们可以看到由用户触发的真实错误。但是我们不能获得来自其他域名的脚本的任何错误信息。
163163
164164类似的跨源策略(CORS)也适用于其他类型资源。
165165
@@ -179,7 +179,7 @@ Script error.
179179
180180在我们的的例子中没有任何 crossorigin 属性。因此禁止跨域访问。让我们来加上它吧。
181181
182- 我们可以选择“anonymous”(不会发送 cookies,但是需要服务端响应头)和 “use-credentials”(发送 cookes,需要两个服务端响应头)中的任意一个 。
182+ 我们可以选择“anonymous”(不会发送 cookies,但是需要一个服务端响应头)或者 “use-credentials”(发送 cookes,需要设置两个服务端响应头) 。
183183
184184如果我们不关心“cookies”,那么可以使用` “anonymous” ` :
185185
@@ -201,6 +201,6 @@ window.onerror = function(message, url, line, col, errorObj) {
201201- ` load ` 在成功加载时被触发。
202202- ` error ` 在加载失败时被触发。
203203
204- 只有 ` <iframe> ` 特殊:出于历史原因,即使页面没有被找到,它总会触发 ` load ` 来完成任何加载过程 。
204+ 只有 ` <iframe> ` 特殊:出于历史原因,不管加载成功还是失败, 即使页面没有被找到,它都会触发 ` load ` 事件 。
205205
206206` readystatechange ` 事件也适用于资源,但很少被使用,因为 ` load/error ` 事件更简单。
0 commit comments