From ba0b4724c329f8441afd90a7f8adf8a782e21ad9 Mon Sep 17 00:00:00 2001 From: LeviDing Date: Thu, 2 Apr 2020 11:00:13 +0800 Subject: [PATCH 01/23] Update article.md --- 2-ui/5-loading/02-script-async-defer/article.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/2-ui/5-loading/02-script-async-defer/article.md b/2-ui/5-loading/02-script-async-defer/article.md index 6c49d9945f..21ce358c1c 100755 --- a/2-ui/5-loading/02-script-async-defer/article.md +++ b/2-ui/5-loading/02-script-async-defer/article.md @@ -1,5 +1,5 @@ -# Script 标签属性:async, defer +# 脚本:async,defer 现代的网站中,脚本往往比 HTML 更“重”:它们的大小通常更大,处理时间也更长。 From 35274561b0c5725a0152f4e4e7266f016cf951d7 Mon Sep 17 00:00:00 2001 From: LeviDing Date: Thu, 2 Apr 2020 11:40:23 +0800 Subject: [PATCH 02/23] Update article.md --- .../02-script-async-defer/article.md | 36 +++++++++---------- 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/2-ui/5-loading/02-script-async-defer/article.md b/2-ui/5-loading/02-script-async-defer/article.md index 21ce358c1c..465510e02c 100755 --- a/2-ui/5-loading/02-script-async-defer/article.md +++ b/2-ui/5-loading/02-script-async-defer/article.md @@ -7,15 +7,15 @@ 这会导致两个重要的问题: -1. 脚本不能访问到位于它们下面的 DOM 元素,因此,脚本不能给它们添加事件等。 -2. 如果页面顶部有一个庞大的脚本,它会“阻塞页面”。在脚本下载并执行结束前,用户都不能看到页面内容: +1. 脚本不能访问到位于它们下面的 DOM 元素,因此,脚本无法给它们添加处理程序等。 +2. 如果页面顶部有一个笨重的脚本,它会“阻塞页面”。在该脚本下载并执行结束前,用户都不能看到页面内容: ```html run height=100

...content before script...

- +

...content after script...

``` @@ -29,17 +29,17 @@ ``` -但是这样的方案绝非完美。例如:浏览器只有在下载完整的 HTML 文档后才会注意到脚本(并且开始下载它)。对于长的 HTML 文档来说,这样的延迟必须引起注意。 +但是这种解决方案远非完美。例如,浏览器只有在下载了完整的 HTML 文档之后才会注意到该脚本(并且可以开始下载它)。对于长的 HTML 文档来说,这样可能会造成明显的延迟。 -对于网络连接很快的人来说,这不值一提。但是这个世界上仍然有很多地区的人们他们使用很慢的网络连接,并且使用着远非完美的移动互联网。 +这对于使用高速连接的人来说,这不值一提,他们不会感受到这种延迟。但是这个世界上仍然有很多地区的人们所使用的网络速度很慢,并且使用的是远非完美的移动互联网连接。 -幸运的是,这里有两个 ` From 4439ed5472c5983866df7c4e9174a5f1f18291c8 Mon Sep 17 00:00:00 2001 From: LeviDing Date: Thu, 2 Apr 2020 14:31:09 +0800 Subject: [PATCH 04/23] Update article.md --- .../02-script-async-defer/article.md | 36 +++++++++---------- 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/2-ui/5-loading/02-script-async-defer/article.md b/2-ui/5-loading/02-script-async-defer/article.md index efa72c130d..9febc4cfed 100755 --- a/2-ui/5-loading/02-script-async-defer/article.md +++ b/2-ui/5-loading/02-script-async-defer/article.md @@ -80,13 +80,13 @@ ``` ```smart header="短脚本先下载完成,但是后执行" -浏览器解析页面找到 script 特性并并行下载它们,以提高性能。因此,在上面的实例中,两个脚本并行下载。`small.js` 可能会先下载完成。 +浏览器扫描页面寻找脚本,然后并行下载它们,以提高性能。因此,在上面的示例中,两个脚本是并行下载的。`small.js` 可能会先下载完成。 -但是规范要求脚本按照文档顺序执行,因此它要等到 `long.js` 执行结束才会被执行。 +但是规范要求脚本按照文档顺序执行,因此,它需要等到 `long.js` 执行结束才会被执行。 ``` ```smart header="`defer` 特性仅适用于外部脚本" -`defer` 特性会忽略没有 `src` 特性的 ` ``` -错误报告与上面不同,就像这样: +错误报告与上面那个示例中的不同,就像这样: ``` Script error. , 0:0 ``` -错误细节可能因浏览器而异,但是原理是相同的:任何有关脚本内部的信息都是不可见的。确切来说是因为它来自于其他域。 +错误详细信息可能因浏览器而异,但是原理是相同的:有关脚本内部的任何信息(包括错误堆栈跟踪)都被隐藏了。正是因为它来自于另一个域。 -我们为什么需要细节信息? +为什么我们需要错误详细信息? 因为有很多服务(我们也可以自己建立)监听 `window.onerror`,在服务器上保存错误信息,并分析它们,以提供用户相应的错误页面。这很棒,因为我们可以看到由用户触发的真实错误。但是我们不能获得来自其他域名的脚本的任何错误信息。 From 9f00cf60f3c83aa4ded21baac2dcb806ca1a825b Mon Sep 17 00:00:00 2001 From: LeviDing Date: Thu, 2 Apr 2020 19:39:05 +0800 Subject: [PATCH 17/23] Update article.md --- 2-ui/5-loading/03-onload-onerror/article.md | 30 ++++++++++++--------- 1 file changed, 18 insertions(+), 12 deletions(-) diff --git a/2-ui/5-loading/03-onload-onerror/article.md b/2-ui/5-loading/03-onload-onerror/article.md index cfe680d6b0..070917138b 100644 --- a/2-ui/5-loading/03-onload-onerror/article.md +++ b/2-ui/5-loading/03-onload-onerror/article.md @@ -5,7 +5,7 @@ 这里有两个事件: - `onload` —— 成功加载, -- `onerror` —— 出现异常。 +- `onerror` —— 出现 error。 ## 加载脚本 @@ -53,7 +53,7 @@ script.onload = function() { ### script.onerror -发生在脚本加载期间的错误会被 `error` 事件跟踪到。 +发生在脚本加载期间的 error 会被 `error` 事件跟踪到。 例如,我们请求一个不存在的脚本: @@ -69,12 +69,12 @@ script.onerror = function() { */!* ``` -请注意,在这里我们无法获取更多 HTTP 错误详细信息。我们不知道错误是 404 还是 500 或者其他情况。只知道是加载失败了。 +请注意,在这里我们无法获取更多 HTTP error 的详细信息。我们不知道 error 是 404 还是 500 或者其他情况。只知道是加载失败了。 ```warn `onload`/`onerror` 事件仅跟踪加载本身。 -在脚本处理和执行期间可能发生的错误超出了这些事件跟踪的范围。也就是说:如果脚本成功加载,则即使脚本中有编程错误,也会触发 `onload` 事件。如果要跟踪脚本错误,可以使用 `window.onerror` 全局处理程序。 +在脚本处理和执行期间可能发生的 error 超出了这些事件跟踪的范围。也就是说:如果脚本成功加载,则即使脚本中有编程 error,也会触发 `onload` 事件。如果要跟踪脚本 error,可以使用 `window.onerror` 全局处理程序。 ``` ## 其他资源 @@ -99,7 +99,7 @@ img.onerror = function() { 但是有一些注意事项: - 大多数资源在被添加到文档中后,便开始加载。但是 `` 是个例外。它要等到获得 src `(*)` 后才开始加载。 -- 对于 `