diff --git a/files/zh-cn/web/api/headers/entries/index.md b/files/zh-cn/web/api/headers/entries/index.md index 216ae016749095..b5740f7860a772 100644 --- a/files/zh-cn/web/api/headers/entries/index.md +++ b/files/zh-cn/web/api/headers/entries/index.md @@ -5,7 +5,7 @@ slug: Web/API/Headers/entries {{APIRef}}{{SeeCompatTable}} -**`Headers.entries()`** 以 {{jsxref("Iteration_protocols","迭代器")}} 的形式返回 Headers 对象中所有的键值对. +**`Headers.entries()`** 以 {{jsxref("Iteration_protocols","迭代器")}} 的形式返回 Headers 对象中所有的键值对。 > **备注:** 这个方法在 [Web Workers](/zh-CN/docs/Web/API/Web_Workers_API)中是可用的。 diff --git a/files/zh-cn/web/api/headers/headers/index.md b/files/zh-cn/web/api/headers/headers/index.md index c69367300a48e5..00942079a37109 100644 --- a/files/zh-cn/web/api/headers/headers/index.md +++ b/files/zh-cn/web/api/headers/headers/index.md @@ -5,7 +5,7 @@ slug: Web/API/Headers/Headers {{APIRef("Fetch")}}{{ SeeCompatTable() }} -`使用Headers()` 构造方法创建一个新的{{domxref("Headers")}} 对象。 +使用 `Headers()` 构造方法创建一个新的 {{domxref("Headers")}} 对象。 ## Syntax @@ -16,7 +16,7 @@ var myHeaders = new Headers(init); ### Parameters - _init_ {{optional_inline}} - - : 通过一个包含任意 [HTTP headers](/zh-CN/docs/Web/HTTP/Headers) 的对象来预设你的 `Headers`. 可以是一个{{domxref("ByteString")}} 对象; 或者是一个已存在的 `Headers` 对象. + - : 通过一个包含任意 [HTTP headers](/zh-CN/docs/Web/HTTP/Headers) 的对象来预设你的 `Headers`. 可以是一个{{domxref("ByteString")}} 对象; 或者是一个已存在的 `Headers` 对象。 ## Example diff --git a/files/zh-cn/web/api/headers/index.md b/files/zh-cn/web/api/headers/index.md index 39a0e36471eba9..16545dc7ffa9e2 100644 --- a/files/zh-cn/web/api/headers/index.md +++ b/files/zh-cn/web/api/headers/index.md @@ -5,11 +5,11 @@ slug: Web/API/Headers {{ APIRef("Fetch") }} -[Fetch API](/zh-CN/docs/Web/API/Fetch_API) 的 **Headers** 接口允许您对 HTTP 请求和响应头执行各种操作。 这些操作包括检索,设置,添加和删除。 一个 Headers 对象具有关联的头列表,它最初为空,由零个或多个键值对组成。你可以使用 {{domxref("Headers.append","append()")}} 方法添加 之类的方法添加到此 (参见 [示例](#示例))。在该接口的所有方法中,标题名称由不区分大小写的字节序列匹配。 +[Fetch API](/zh-CN/docs/Web/API/Fetch_API) 的 **Headers** 接口允许您对 HTTP 请求和响应头执行各种操作。这些操作包括检索,设置,添加和删除。一个 Headers 对象具有关联的头列表,它最初为空,由零个或多个键值对组成。你可以使用 {{domxref("Headers.append","append()")}} 方法添加 之类的方法添加到此 (参见 [示例](#示例))。在该接口的所有方法中,标题名称由不区分大小写的字节序列匹配。 出于安全考虑,某些头只能由用户代理控制。这些头信息包括 {{Glossary("Forbidden_header_name", "forbidden header names", 1)}} 和 {{Glossary("Forbidden_response_header_name", "forbidden response header names", 1)}}。 -一个 Headers 对象也有一个关联的 guard,它具有不可变的值,`request`,`request-no-cors`,`response`或`none`。 这会影响 {{domxref("Headers.set","set()")}}, {{domxref("Headers.delete","delete()")}}, 和{{domxref("Headers.append","append()")}} 方法 改变 header. 参考更多信息,请看 {{Glossary("Guard")}}. +一个 Headers 对象也有一个关联的 guard,它具有不可变的值,`request`,`request-no-cors`,`response`或`none`。这会影响 {{domxref("Headers.set","set()")}}, {{domxref("Headers.delete","delete()")}}, 和{{domxref("Headers.append","append()")}} 方法 改变 header. 参考更多信息,请看 {{Glossary("Guard")}}. 你可以通过 {{domxref("Request.headers")}} 和{{domxref("Response.headers")}} 属性检索一个`Headers`对象,并使用 {{domxref("Headers.Headers()")}} 构造函数创建一个新的`Headers` 对象。 @@ -43,7 +43,7 @@ slug: Web/API/Headers > **备注:** 值得注意的是,在 header 已存在或者有多个值的状态下{{domxref("Headers.set()")}} 和 {{domxref("Headers.append()")}}的使用有如下区别,{{domxref("Headers.set()")}} 将会用新的值覆盖已存在的值,但是{{domxref("Headers.append()")}}会将新的值添加到已存在的值的队列末尾。请参相关词条内的示例代码。 -> **备注:** 如果您尝试传入名称不是[有效的 HTTP 头名称](https://fetch.spec.whatwg.org/#concept-header-name)的引用,则所有 Headers 方法都将引发 `TypeError` 。 如果头部有一个不变的{{Glossary("Guard")}},则变异操作将会抛出一个 `TypeError` 。 在其他任何失败的情况下,他们默默地失败。 +> **备注:** 如果您尝试传入名称不是[有效的 HTTP 头名称](https://fetch.spec.whatwg.org/#concept-header-name)的引用,则所有 Headers 方法都将引发 `TypeError` 。如果头部有一个不变的{{Glossary("Guard")}},则变异操作将会抛出一个 `TypeError` 。在其他任何失败的情况下,他们默默地失败。 ### Obsolete methods diff --git a/files/zh-cn/web/api/history/pushstate/index.md b/files/zh-cn/web/api/history/pushstate/index.md index e7c31481e38ea4..d7fa6d4e375eb3 100644 --- a/files/zh-cn/web/api/history/pushstate/index.md +++ b/files/zh-cn/web/api/history/pushstate/index.md @@ -16,12 +16,12 @@ history.pushState(state, title[, url]) ### 参数 - `state` - - : 状态对象是一个 JavaScript 对象,它与`pushState()`创建的新历史记录条目相关联。 每当用户导航到新状态时,都会触发{{event("popstate")}}事件,并且该事件的状态属性包含历史记录条目的状态对象的副本。 - 状态对象可以是任何可以序列化的对象。 因为 Firefox 将状态对象保存到用户的磁盘上,以便用户重新启动浏览器后可以将其还原,所以我们对状态对象的序列化表示施加了 2MiB 的大小限制。 如果将序列化表示形式大于此状态的状态对象传递给`pushState()`,则该方法将引发异常。 如果您需要更多空间,建议您使用 {{domxref("Window.sessionStorage", "sessionStorage")}}或者{{domxref("Window.localStorage", "localStorage")}}。 + - : 状态对象是一个 JavaScript 对象,它与`pushState()`创建的新历史记录条目相关联。每当用户导航到新状态时,都会触发{{event("popstate")}}事件,并且该事件的状态属性包含历史记录条目的状态对象的副本。 + 状态对象可以是任何可以序列化的对象。因为 Firefox 将状态对象保存到用户的磁盘上,以便用户重新启动浏览器后可以将其还原,所以我们对状态对象的序列化表示施加了 2MiB 的大小限制。如果将序列化表示形式大于此状态的状态对象传递给`pushState()`,则该方法将引发异常。如果您需要更多空间,建议您使用 {{domxref("Window.sessionStorage", "sessionStorage")}}或者{{domxref("Window.localStorage", "localStorage")}}。 - `title` - - : [当前大多数浏览器都忽略此参数](https://github.com/whatwg/html/issues/2174),尽管将来可能会使用它。 在此处传递空字符串应该可以防止将来对方法的更改。 或者,您可以为要移动的状态传递简短的标题。 + - : [当前大多数浏览器都忽略此参数](https://github.com/whatwg/html/issues/2174),尽管将来可能会使用它。在此处传递空字符串应该可以防止将来对方法的更改。或者,您可以为要移动的状态传递简短的标题。 - `url` {{optional_inline}} - - : 新历史记录条目的 URL 由此参数指定。 请注意,浏览器不会在调用 `pushState()` 之后尝试加载此 URL,但可能会稍后尝试加载 URL,例如在用户重新启动浏览器之后。 新的 URL 不必是绝对的。 如果是相对的,则相对于当前 URL 进行解析。 新网址必须与当前网址相同 {{glossary("origin")}}; 否则,`pushState()`将引发异常。 如果未指定此参数,则将其设置为文档的当前 URL。 + - : 新历史记录条目的 URL 由此参数指定。请注意,浏览器不会在调用 `pushState()` 之后尝试加载此 URL,但可能会稍后尝试加载 URL,例如在用户重新启动浏览器之后。新的 URL 不必是绝对的。如果是相对的,则相对于当前 URL 进行解析。新网址必须与当前网址相同 {{glossary("origin")}};否则,`pushState()`将引发异常。如果未指定此参数,则将其设置为文档的当前 URL。 ## 描述 diff --git a/files/zh-cn/web/api/history/replacestate/index.md b/files/zh-cn/web/api/history/replacestate/index.md index cc43c47606845b..1a55f9973ab891 100644 --- a/files/zh-cn/web/api/history/replacestate/index.md +++ b/files/zh-cn/web/api/history/replacestate/index.md @@ -5,7 +5,7 @@ slug: Web/API/History/replaceState {{APIRef("DOM")}} -`replaceState()`方法使用`state objects`, `title`,和 `URL` 作为参数, 修改当前历史记录实体,如果你想更新当前的 state 对象或者当前历史实体的 URL 来响应用户的的动作的话这个方法将会非常有用。 +`replaceState()`方法使用`state objects`, `title`,和 `URL` 作为参数,修改当前历史记录实体,如果你想更新当前的 state 对象或者当前历史实体的 URL 来响应用户的的动作的话这个方法将会非常有用。 ## 语法 diff --git a/files/zh-cn/web/api/history/state/index.md b/files/zh-cn/web/api/history/state/index.md index f69f4ab918d033..6e00e357750c3b 100644 --- a/files/zh-cn/web/api/history/state/index.md +++ b/files/zh-cn/web/api/history/state/index.md @@ -3,7 +3,7 @@ title: state slug: Web/API/History/state --- -返回在 history 栈顶的 `任意` 值的拷贝。 通过这种方式可以查看 state 值,不必等待 [`popstate`](/zh-CN/docs/Web/Events/popstate)事件发生后再查看。 +返回在 history 栈顶的 `任意` 值的拷贝。通过这种方式可以查看 state 值,不必等待 [`popstate`](/zh-CN/docs/Web/Events/popstate)事件发生后再查看。 ## 语法 diff --git a/files/zh-cn/web/api/history_api/index.md b/files/zh-cn/web/api/history_api/index.md index 51a9ba65c49c59..494378a1cc74f3 100644 --- a/files/zh-cn/web/api/history_api/index.md +++ b/files/zh-cn/web/api/history_api/index.md @@ -29,7 +29,7 @@ window.history.forward(); ### 跳转到 history 中指定的一个点 -你可以用 `go()` 方法载入到会话历史中的某一特定页面, 通过与当前页面相对位置来标志 (当前页面的相对位置标志为 0). +你可以用 `go()` 方法载入到会话历史中的某一特定页面,通过与当前页面相对位置来标志 (当前页面的相对位置标志为 0). 向后移动一个页面 (等同于调用 `back()`): @@ -81,7 +81,7 @@ history.pushState(stateObj, "page 2", "bar.html"); 假设现在用户在 bar.html 又访问了 `http://google.com`,然后点击了返回按钮。此时,地址栏将显示 `http://mozilla.org/bar.html`, `history.state` 中包含了 `stateObj` 的一份拷贝。页面此时展现为`bar.html`。且因为页面被重新加载了,所以 `popstate` 事件将不会被触发,也不会执行 alert(2)。 -如果我们再次点击返回按钮,页面 URL 会变为 `http://mozilla.org/foo.html`,文档对象 document 会触发另外一个 `popstate` 事件 (如果有 bar.html,且 bar.html 注册了 onpopstate 事件,将会触发此事件,因此也不会执行 foo 页面注册的 onpopstate 事件,也就是不会执行 alert(2)),这一次的事件对象 state object 为 null。 这里也一样,返回并不改变文档的内容,尽管文档在接收 `popstate` 事件时可能会改变自己的内容,其内容仍与之前的展现一致。 +如果我们再次点击返回按钮,页面 URL 会变为 `http://mozilla.org/foo.html`,文档对象 document 会触发另外一个 `popstate` 事件 (如果有 bar.html,且 bar.html 注册了 onpopstate 事件,将会触发此事件,因此也不会执行 foo 页面注册的 onpopstate 事件,也就是不会执行 alert(2)),这一次的事件对象 state object 为 null。这里也一样,返回并不改变文档的内容,尽管文档在接收 `popstate` 事件时可能会改变自己的内容,其内容仍与之前的展现一致。 如果我们再次点击返回按钮,页面 URL 变为其他页面的 url,依然不会执行 alert(2)。因为在返回到 foo 页面的时候并没有 pushState。 @@ -96,12 +96,12 @@ history.pushState(stateObj, "page 2", "bar.html"); - **标题** — Firefox 目前忽略这个参数,但未来可能会用到。在此处传一个空字符串应该可以安全的防范未来这个方法的更改。或者,你可以为跳转的 state 传递一个短标题。 - **URL** — 该参数定义了新的历史 URL 记录。注意,调用 `pushState()` 后浏览器并不会立即加载这个 URL,但可能会在稍后某些情况下加载这个 URL,比如在用户重新打开浏览器时。新 URL 不必须为绝对路径。如果新 URL 是相对路径,那么它将被作为相对于当前 URL 处理。新 URL 必须与当前 URL 同源,否则 `pushState()` 会抛出一个异常。该参数是可选的,缺省为当前 URL。 -> **备注:** 从 Gecko 2.0 {{ geckoRelease("2.0") }} 到 Gecko 5.0 {{ geckoRelease("5.0") }},传递的对象是使用 JSON 进行序列化的。 从 Gecko 6.0 {{ geckoRelease("6.0") }}开始,该对象的序列化将使用[结构化克隆算法](/zh-CN/DOM/The_structured_clone_algorithm)。这将会使更多对象可以被安全的传递。 +> **备注:** 从 Gecko 2.0 {{ geckoRelease("2.0") }} 到 Gecko 5.0 {{ geckoRelease("5.0") }},传递的对象是使用 JSON 进行序列化的。从 Gecko 6.0 {{ geckoRelease("6.0") }}开始,该对象的序列化将使用[结构化克隆算法](/zh-CN/DOM/The_structured_clone_algorithm)。这将会使更多对象可以被安全的传递。 在某种意义上,调用 `pushState()` 与 设置 `window.location = "#foo"` 类似,二者都会在当前页面创建并激活新的历史记录。但 `pushState()` 具有如下几条优点: -- 新的 URL 可以是与当前 URL 同源的任意 URL 。相反,只有在修改哈希时,设置 `window.location` 才能是同一个 {{ domxref("document") }}。 -- 如果你不想改 URL,就不用改。相反,设置 `window.location = "#foo";`在当前哈希不是 `#foo` 时, 才能创建新的历史记录项。 +- 新的 URL 可以是与当前 URL 同源的任意 URL。相反,只有在修改哈希时,设置 `window.location` 才能是同一个 {{ domxref("document") }}。 +- 如果你不想改 URL,就不用改。相反,设置 `window.location = "#foo";`在当前哈希不是 `#foo` 时,才能创建新的历史记录项。 - 你可以将任意数据和新的历史记录项相关联。而基于哈希的方式,要把所有相关数据编码为短字符串。 - 如果 `标题` 随后还会被浏览器所用到,那么这个数据是可以被使用的(哈希则不是)。 @@ -113,11 +113,11 @@ history.pushState(stateObj, "page 2", "bar.html"); ### replaceState() 方法 -`history.replaceState()` 的使用与 `history.pushState()` 非常相似,区别在于 `replaceState()` 是修改了当前的历史记录项而不是新建一个。 注意这并不会阻止其在全局浏览器历史记录中创建一个新的历史记录项。 +`history.replaceState()` 的使用与 `history.pushState()` 非常相似,区别在于 `replaceState()` 是修改了当前的历史记录项而不是新建一个。注意这并不会阻止其在全局浏览器历史记录中创建一个新的历史记录项。 `replaceState()` 的使用场景在于为了响应用户操作,你想要更新状态对象 state 或者当前历史记录的 URL。 -> **备注:** 从 Gecko 2.0 {{ geckoRelease("2.0") }} 到 Gecko 5.0 {{ geckoRelease("5.0") }},传递的对象是使用 JSON 进行序列化的。 从 Gecko 6.0 {{ geckoRelease("6.0") }} 开始,该对象的序列化将使用[结构化克隆算法](/zh-CN/docs/Web/API/Web_Workers_API/Structured_clone_algorithm)。这将会使更多对象可以被安全的传递。 +> **备注:** 从 Gecko 2.0 {{ geckoRelease("2.0") }} 到 Gecko 5.0 {{ geckoRelease("5.0") }},传递的对象是使用 JSON 进行序列化的。从 Gecko 6.0 {{ geckoRelease("6.0") }} 开始,该对象的序列化将使用[结构化克隆算法](/zh-CN/docs/Web/API/Web_Workers_API/Structured_clone_algorithm)。这将会使更多对象可以被安全的传递。 ### replaceState() 方法示例 @@ -151,7 +151,7 @@ history.replaceState(stateObj, "page 3", "bar2.html"); 页面加载时,或许会有个非 null 的状态对象。这是有可能发生的,举个例子,假如页面(通过`pushState()` 或 `replaceState()` 方法)设置了状态对象而后用户重启了浏览器。那么当页面重新加载时,页面会接收一个 onload 事件,但没有 popstate 事件。然而,假如你读取了 history.state 属性,你将会得到如同 popstate 被触发时能得到的状态对象。 -你可以读取当前历史记录项的状态对象 state,而不必等待`popstate` 事件, 只需要这样使用`history.state` 属性: +你可以读取当前历史记录项的状态对象 state,而不必等待`popstate` 事件,只需要这样使用`history.state` 属性: ```js // 尝试通过 pushState 创建历史条目,然后再刷新页面查看 state 状态对象变化; diff --git a/files/zh-cn/web/api/html_dom_api/microtask_guide/in_depth/index.md b/files/zh-cn/web/api/html_dom_api/microtask_guide/in_depth/index.md index 74472e88094390..2164e660b63fbe 100644 --- a/files/zh-cn/web/api/html_dom_api/microtask_guide/in_depth/index.md +++ b/files/zh-cn/web/api/html_dom_api/microtask_guide/in_depth/index.md @@ -22,7 +22,7 @@ JavaScript 本质上是一门单线程语言。对于在它被设计出来的那 当一段 JavaScript 代码在运行的时候,它实际上是运行在**执行上下文**中。下面 3 种类型的代码会创建一个新的执行上下文: - 全局上下文是为运行代码主体而创建的执行上下文,也就是说它是为那些存在于 JavaScript 函数之外的任何代码而创建的。 -- 每个函数会在执行的时候创建自己的执行上下文。这个上下文就是通常说的 “本地上下文”。 +- 每个函数会在执行的时候创建自己的执行上下文。这个上下文就是通常说的“本地上下文”。 - 使用 {{jsxref("Global_Objects/eval", "eval()")}} 函数也会创建一个新的执行上下文。 每一个上下文在本质上都是一种作用域层级。每个代码段开始执行的时候都会创建一个新的上下文来运行它,并且在代码退出的时候销毁掉。看看下面这段 JavaScript 程序: @@ -65,12 +65,12 @@ greetUser("Veronica"); - 当执行到 `greetUser("Mike")` 的时候会为 `greetUser()` 函数创建一个它的上下文。这个执行上下文会被推入执行上下文栈中。 - - 当 `greetUser()` 调用 `localGreeting()`的时候会为该方法创建一个新的上下文。并且在 `localGreeting()` 退出的时候它的上下文也会从执行栈中弹出并销毁。 程序会从栈中获取下一个上下文并恢复执行, 也就是从 `greetUser()` 剩下的部分开始执行。 + - 当 `greetUser()` 调用 `localGreeting()`的时候会为该方法创建一个新的上下文。并且在 `localGreeting()` 退出的时候它的上下文也会从执行栈中弹出并销毁。程序会从栈中获取下一个上下文并恢复执行,也就是从 `greetUser()` 剩下的部分开始执行。 - `greetUser()` 执行完毕并退出,其上下文也从栈中弹出并销毁。 - 当 `greetUser("Teresa")` 开始执行时,程序又会为它创建一个上下文并推入栈顶。 - - 当 `greetUser()` 调用 `localGreeting()`的时候另一个上下文被创建并用于运行该函数。 当 `localGreeting()` 退出的时候它的上下文也从栈中弹出并销毁。 `greetUser()` 得到恢复并继续执行剩下的部分。 + - 当 `greetUser()` 调用 `localGreeting()`的时候另一个上下文被创建并用于运行该函数。当 `localGreeting()` 退出的时候它的上下文也从栈中弹出并销毁。 `greetUser()` 得到恢复并继续执行剩下的部分。 - `greetUser()` 执行完毕并退出,其上下文也从栈中弹出并销毁。 - 然后执行到 `greetUser("Veronica")` 又再为它创建一个上下文并推入栈顶。 @@ -94,7 +94,7 @@ greetUser("Veronica"); 每个代理都是由**事件循环**驱动的,事件循环负责收集用事件(包括用户事件以及其他非用户事件等)、对任务进行排队以便在合适的时候执行回调。然后它执行所有处于等待中的 JavaScript 任务(宏任务),然后是微任务,然后在开始下一次循环之前执行一些必要的渲染和绘制操作。 -网页或者 app 的代码和浏览器本身的用户界面程序运行在相同的 **{{Glossary("线程")}}**中, 共享相同的 **事件循环**。 该线程就是 **{{Glossary("main thread", "主线程")}}**,它除了运行网页本身的代码之外,还负责收集和派发用户和其它事件,以及渲染和绘制网页内容等。 +网页或者 app 的代码和浏览器本身的用户界面程序运行在相同的 **{{Glossary("线程")}}**中,共享相同的 **事件循环**。该线程就是 **{{Glossary("main thread", "主线程")}}**,它除了运行网页本身的代码之外,还负责收集和派发用户和其它事件,以及渲染和绘制网页内容等。 然后,事件循环会驱动发生在浏览器中与用户交互有关的一切,但在这里,对我们来说更重要的是需要了解它是如何负责调度和执行在其线程中执行的每段代码的。 @@ -103,11 +103,11 @@ greetUser("Veronica"); - Window 事件循环 - : window 事件循环驱动所有同源的窗口 (though there are further limits to this as described elsewhere in this article XXXX ????). - Worker 事件循环 - - : worker 事件循环顾名思义就是驱动 worker 的事件循环。这包括了所有种类的 worker:最基本的 [web worker](/zh-CN/docs/Web/API/Web_Workers_API) 以及 [shared worker](/zh-CN/docs/Web/API/SharedWorker) 和 [service worker](/zh-CN/docs/Web/API/Service_Worker_API)。 Worker 被放在一个或多个独立于 “主代码” 的代理中。浏览器可能会用单个或多个事件循环来处理给定类型的所有 worker。 + - : worker 事件循环顾名思义就是驱动 worker 的事件循环。这包括了所有种类的 worker:最基本的 [web worker](/zh-CN/docs/Web/API/Web_Workers_API) 以及 [shared worker](/zh-CN/docs/Web/API/SharedWorker) 和 [service worker](/zh-CN/docs/Web/API/Service_Worker_API)。Worker 被放在一个或多个独立于“主代码”的代理中。浏览器可能会用单个或多个事件循环来处理给定类型的所有 worker。 - Worklet 事件循环 - : [worklet](/zh-CN/docs/Web/API/Worklet) 事件循环用于驱动运行 worklet 的代理。这包含了 {{domxref("Worklet")}}、{{domxref("AudioWorklet")}} 以及 {{domxref("PaintWorklet")}}。 -多个同{{Glossary("源")}}(译者注:此处同源的源应该不是指同源策略中的源,而是指由同一个窗口打开的多个子窗口或同一个窗口中的多个 iframe 等,意味着起源的意思,下一段内容就会对这里进行说明)窗口可能运行在相同的事件循环中,每个队列任务进入到事件循环中以便处理器能够轮流对它们进行处理。记住这里的网络术语 “window” 实际上指的用于运行网页内容的浏览器级容器,包括实际的 window,一个 tab 标签或者一个 frame。 +多个同{{Glossary("源")}}(译者注:此处同源的源应该不是指同源策略中的源,而是指由同一个窗口打开的多个子窗口或同一个窗口中的多个 iframe 等,意味着起源的意思,下一段内容就会对这里进行说明)窗口可能运行在相同的事件循环中,每个队列任务进入到事件循环中以便处理器能够轮流对它们进行处理。记住这里的网络术语“window”实际上指的用于运行网页内容的浏览器级容器,包括实际的 window,一个 tab 标签或者一个 frame。 在特定情况下,同源窗口之间共享事件循环,例如: @@ -119,7 +119,7 @@ greetUser("Veronica"); #### 任务 vs 微任务 -一个**任务**就是指计划由标准机制来执行的任何 JavaScript,如程序的初始化、事件触发的回调等。 除了使用事件,你还可以使用 {{domxref("window.setTimeout", "setTimeout()")}} 或者 {{domxref("window.setInterval", "setInterval()")}} 来添加任务**。** +一个**任务**就是指计划由标准机制来执行的任何 JavaScript,如程序的初始化、事件触发的回调等。除了使用事件,你还可以使用 {{domxref("window.setTimeout", "setTimeout()")}} 或者 {{domxref("window.setInterval", "setInterval()")}} 来添加任务**。** 任务队列和微任务队列的区别很简单,但却很重要: @@ -140,7 +140,7 @@ greetUser("Veronica"); 微任务是另一种解决该问题的方案,通过将代码安排在下一次事件循环开始之前运行而不是必须要等到下一次开始之后才执行,这样可以提供一个更好的访问级别。 -微任务队列已经存在有一段时间了,但之前它仅仅被内部使用来驱动诸如 promise 这些。`queueMicrotask()`的加入可以让开发者创建一个统一的微任务队列,它能够在任何时候即便是当 JavaScript 执行上下文栈中没有执行上下文剩余时也可以将代码安排在一个安全的时间运行。 在多个实例、所有浏览器以及运行时中,一个标准的微任务队列机制意味着这些微任务可以非常可靠的以相同的顺序执行,从而避免一些潜在的难以发现的错误。 +微任务队列已经存在有一段时间了,但之前它仅仅被内部使用来驱动诸如 promise 这些。`queueMicrotask()`的加入可以让开发者创建一个统一的微任务队列,它能够在任何时候即便是当 JavaScript 执行上下文栈中没有执行上下文剩余时也可以将代码安排在一个安全的时间运行。在多个实例、所有浏览器以及运行时中,一个标准的微任务队列机制意味着这些微任务可以非常可靠的以相同的顺序执行,从而避免一些潜在的难以发现的错误。 ## 更多 diff --git a/files/zh-cn/web/api/html_dom_api/microtask_guide/index.md b/files/zh-cn/web/api/html_dom_api/microtask_guide/index.md index 81cb00ec5e38ab..4cd15f7f620a1b 100644 --- a/files/zh-cn/web/api/html_dom_api/microtask_guide/index.md +++ b/files/zh-cn/web/api/html_dom_api/microtask_guide/index.md @@ -5,7 +5,7 @@ slug: Web/API/HTML_DOM_API/Microtask_guide {{APIRef("HTML DOM")}} -一个 **微任务(microtask)**就是一个简短的函数,当创建该函数的函数执行之后,_并且_ 只有当 Javascript 调用栈为空,而控制权尚未返还给被 {{Glossary("user agent")}} 用来驱动脚本执行环境的事件循环之前,该微任务才会被执行。 事件循环既可能是浏览器的主事件循环也可能是被一个 [web worker](/zh-CN/docs/Web/API/Web_Workers_API) 所驱动的事件循环。这使得给定的函数在没有其他脚本执行干扰的情况下运行,也保证了微任务能在用户代理有机会对该微任务带来的行为做出反应之前运行。 +一个 **微任务(microtask)**就是一个简短的函数,当创建该函数的函数执行之后,_并且_ 只有当 Javascript 调用栈为空,而控制权尚未返还给被 {{Glossary("user agent")}} 用来驱动脚本执行环境的事件循环之前,该微任务才会被执行。事件循环既可能是浏览器的主事件循环也可能是被一个 [web worker](/zh-CN/docs/Web/API/Web_Workers_API) 所驱动的事件循环。这使得给定的函数在没有其他脚本执行干扰的情况下运行,也保证了微任务能在用户代理有机会对该微任务带来的行为做出反应之前运行。 JavaScript 中的 [promises](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Promise) 和 [Mutation Observer API](/zh-CN/docs/Web/API/Mutation_Observer_API) 都使用微任务队列去运行它们的回调函数,但当能够推迟工作直到当前事件循环过程完结时,也是可以执行微任务的时机。为了允许第三方库、框架、polyfills 能使用微任务,{{domxref("Window")}} 暴露了 {{domxref("queueMicrotask()")}} 方法,而 {{domxref("Worker")}} 接口则通过 `WindowOrWorkerGlobalScope` mixin 提供了同名的 queueMicrotask() 方法。 @@ -33,7 +33,7 @@ JavaScript 中的 [promises](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects 首先,每当一个任务存在,事件循环都会检查该任务是否正把控制权交给其他 JavaScript 代码。如若不然,事件循环就会运行微任务队列中的所有微任务。接下来微任务循环会在事件循环的每次迭代中被处理多次,包括处理完事件和其他回调之后。 -其次,如果一个微任务通过调用 {{domxref("queueMicrotask()")}}, 向队列中加入了更多的微任务,则那些新加入的微任务 _会早于下一个任务运行_ 。这是因为事件循环会持续调用微任务直至队列中没有留存的,即使是在有更多微任务持续被加入的情况下。 +其次,如果一个微任务通过调用 {{domxref("queueMicrotask()")}}, 向队列中加入了更多的微任务,则那些新加入的微任务 _会早于下一个任务运行_。这是因为事件循环会持续调用微任务直至队列中没有留存的,即使是在有更多微任务持续被加入的情况下。 > **警告:** 因为微任务自身可以入列更多的微任务,且事件循环会持续处理微任务直至队列为空,那么就存在一种使得事件循环无尽处理微任务的真实风险。如何处理递归增加微任务是要谨慎而行的。 diff --git a/files/zh-cn/web/api/html_drag_and_drop_api/drag_operations/index.md b/files/zh-cn/web/api/html_drag_and_drop_api/drag_operations/index.md index b982c5415dfd31..7a60372e1fcc5e 100644 --- a/files/zh-cn/web/api/html_drag_and_drop_api/drag_operations/index.md +++ b/files/zh-cn/web/api/html_drag_and_drop_api/drag_operations/index.md @@ -33,7 +33,7 @@ slug: Web/API/HTML_Drag_and_Drop_API/Drag_operations `{{htmlattrxref("draggable")}}` 属性可在任意元素上设置,包括图像和链接。然而,对于后两者,该属性的默认值是 `true`,所以你只会在禁用这二者的拖拽时使用到 `{{htmlattrxref("draggable")}}` 属性,将其设置为 `false`。 -> **备注:** 当一个元素被设置成可拖拽时, 元素中的文本和其他子元素不能再以正常的方式(通过鼠标点击和拖拽)被选中。用户必须按住 alt 键,再用鼠标选择文本,或者使用键盘选择。 +> **备注:** 当一个元素被设置成可拖拽时,元素中的文本和其他子元素不能再以正常的方式(通过鼠标点击和拖拽)被选中。用户必须按住 alt 键,再用鼠标选择文本,或者使用键盘选择。 ## 开始拖拽操作 @@ -55,7 +55,7 @@ slug: Web/API/HTML_Drag_and_Drop_API/Drag_operations 所有 {{domxref("DragEvent","拖拽事件")}} 都有一个名为 {{domxref("DragEvent.dataTransfer","dataTransfer")}} 的属性,它持有拖拽数据(`dataTransfer` 是一个 {{domxref("DataTransfer")}} 对象)。 -当拖拽发生时,数据必须与被拖拽的项目相关联。例如,当在文本框中拖拽选定的文本时,与拖拽数据项相关联的数据就是文本本身。类似地,当在 Web 页面上拖拽链接时,拖拽数据项就是链接的 URL 。 +当拖拽发生时,数据必须与被拖拽的项目相关联。例如,当在文本框中拖拽选定的文本时,与拖拽数据项相关联的数据就是文本本身。类似地,当在 Web 页面上拖拽链接时,拖拽数据项就是链接的 URL。 {{domxref("DataTransfer","拖拽数据")}} 包含两个信息,数据的类型(或格式)和数据值。格式是一个类型字符串(例如文本数据的格式是 [`text/plain`](/zh-CN/docs/DragDrop/Recommended_Drag_Types#text)),值是一个文本字符串。拖拽开始时,你提供数据类型和数据值。在拖拽过程中,在 `{{event("dragenter")}}` 和 `{{event("dragover")}}` 事件监听程序中,你使用拖拽数据的类型来检查是否允许放置(drop)。例如,接受链接的放置目标将检查链接类型 [`text/uri-list`](/zh-CN/docs/DragDrop/Recommended_Drag_Types#link)。在放置事件中,监听程序将取回拖拽数据,并将其插入到放置位置。 @@ -69,7 +69,7 @@ slug: Web/API/HTML_Drag_and_Drop_API/Drag_operations event.dataTransfer.setData("text/plain", "Text to drag"); ``` -在这个例子中,数据值是 “Text to drag”,数据类型是 [`text/plain`](/zh-CN/docs/DragDrop/Recommended_Drag_Types#text) 格式。 +在这个例子中,数据值是“Text to drag”,数据类型是 [`text/plain`](/zh-CN/docs/DragDrop/Recommended_Drag_Types#text) 格式。 你可以提供多种格式的数据。要做到这一点,可以用不同的格式多次调用 {{domxref("DataTransfer.setData","setData()")}} 方法。你应该传入尽量具体的格式。 @@ -164,7 +164,7 @@ event.dataTransfer.effectAllowed = "copy"; 在 `{{event("dragenter")}}` 和 `{{event("dragover")}}` 事件中,{{domxref("DataTransfer.dropEffect","dropEffect")}} 属性被初始化为用户请求的效果。用户可以通过按下修饰键来修改为所需的效果。尽管使用什么修饰键取决于不同的平台,但典型情况下,ShiftCtrl 键用于在复制、移动和链接之间切换。鼠标指针会改变样式以指示需要的操作;例如,对于"复制"操作,光标可能会在旁边出现加号。 -你可以在 `{{event("dragenter")}}` 或 `{{event("dragover")}}` 事件期间修改 {{domxref("DataTransfer.dropEffect","dropEffect")}} 属性,例如将某个放置目标设置为只支持某些操作。你可以修改 {{domxref("DataTransfer.dropEffect","dropEffect")}} 属性来覆盖用户指定的效果,并强制修改为一个特定的放置操作。 注意,这个效果必须是 {{domxref("DataTransfer.effectAllowed","effectAllowed")}} 属性中的一个。否则,它将被设置为允许的替代值。 +你可以在 `{{event("dragenter")}}` 或 `{{event("dragover")}}` 事件期间修改 {{domxref("DataTransfer.dropEffect","dropEffect")}} 属性,例如将某个放置目标设置为只支持某些操作。你可以修改 {{domxref("DataTransfer.dropEffect","dropEffect")}} 属性来覆盖用户指定的效果,并强制修改为一个特定的放置操作。注意,这个效果必须是 {{domxref("DataTransfer.effectAllowed","effectAllowed")}} 属性中的一个。否则,它将被设置为允许的替代值。 ```js event.dataTransfer.dropEffect = "copy"; @@ -187,7 +187,7 @@ event.dataTransfer.dropEffect = "copy";
``` -在 `{{event("dragenter")}}` 和 `{{event("dragover")}}` 事件中调用 {{domxref("Event.preventDefault","preventDefault()")}} 方法将表明在该位置允许放置 。但是,你通常希望只在某些情况下调用 {{domxref("Event.preventDefault","preventDefault()")}} 方法(如只当拖拽的是链接时)。 +在 `{{event("dragenter")}}` 和 `{{event("dragover")}}` 事件中调用 {{domxref("Event.preventDefault","preventDefault()")}} 方法将表明在该位置允许放置。但是,你通常希望只在某些情况下调用 {{domxref("Event.preventDefault","preventDefault()")}} 方法(如只当拖拽的是链接时)。 要做到这一点,调用一个函数以检查条件,并且只在满足条件时取消事件。如果条件未满足,则不取消事件,此时用户释放鼠标按钮不会执行放置。 diff --git a/files/zh-cn/web/api/html_drag_and_drop_api/file_drag_and_drop/index.md b/files/zh-cn/web/api/html_drag_and_drop_api/file_drag_and_drop/index.md index 5912394c57d2fd..7c587bf21f82fb 100644 --- a/files/zh-cn/web/api/html_drag_and_drop_api/file_drag_and_drop/index.md +++ b/files/zh-cn/web/api/html_drag_and_drop_api/file_drag_and_drop/index.md @@ -9,11 +9,11 @@ HTML 拖放接口使得 web 应用能够在网页中拖放文件。这篇文档 拖放的主要步骤是为 {{event("drop")}} 事件定义一个*释放区*(释放文件的目标元素) 和为{{event("dragover")}}事件定义一个事件处理程序。下面描述了这些步骤,包括示例程序片段。完整的源码在[MDN's drag-and-drop repository](https://github.com/mdn/dom-examples/tree/master/drag-and-drop) (欢迎提交 pull requests 和/或 issues). -注意: {{domxref("HTML_Drag_and_Drop_API","HTML drag and drop")}}定义了两套不同的 API 来支持拖放文件。一个{{domxref("DataTransfer")}}接口和另一个{{domxref("DataTransferItem")}}与{{domxref("DataTransferItemList")}}接口。这个示例介绍了这两种 API 的用法 (没有使用任何 Gecko 专用的接口)。 +注意:{{domxref("HTML_Drag_and_Drop_API","HTML drag and drop")}}定义了两套不同的 API 来支持拖放文件。一个{{domxref("DataTransfer")}}接口和另一个{{domxref("DataTransferItem")}}与{{domxref("DataTransferItemList")}}接口。这个示例介绍了这两种 API 的用法 (没有使用任何 Gecko 专用的接口)。 ## 定义拖放区域 -触发 {{event("drop")}} 事件的目标元素需要一个{{domxref("GlobalEventHandlers.ondrop","ondrop")}} 事件处理函数 。下面这一段代码以一个 {{HTMLelement("div")}} 元素为例展示了这些工作是如何完成的: +触发 {{event("drop")}} 事件的目标元素需要一个{{domxref("GlobalEventHandlers.ondrop","ondrop")}} 事件处理函数。下面这一段代码以一个 {{HTMLelement("div")}} 元素为例展示了这些工作是如何完成的: ```html
diff --git a/files/zh-cn/web/api/html_drag_and_drop_api/index.md b/files/zh-cn/web/api/html_drag_and_drop_api/index.md index 338e7c77a94de0..9a99ab075d5ecc 100644 --- a/files/zh-cn/web/api/html_drag_and_drop_api/index.md +++ b/files/zh-cn/web/api/html_drag_and_drop_api/index.md @@ -13,7 +13,7 @@ slug: Web/API/HTML_Drag_and_Drop_API ## 拖拽事件 -HTML 的 drag & drop 使用了 {{domxref("Event","DOM event model")}} 以及从 {{domxref("MouseEvent","mouse events")}} 继承而来的 _{{domxref("DragEvent","drag events")}}_ 。一个典型的拖拽操作是这样的:用户选中一个*可拖拽的(draggable)*元素,并将其拖拽(鼠标不放开)到一个*可放置的(droppable)*元素,然后释放鼠标。 +HTML 的 drag & drop 使用了 {{domxref("Event","DOM event model")}} 以及从 {{domxref("MouseEvent","mouse events")}} 继承而来的 _{{domxref("DragEvent","drag events")}}_。一个典型的拖拽操作是这样的:用户选中一个*可拖拽的(draggable)*元素,并将其拖拽(鼠标不放开)到一个*可放置的(droppable)*元素,然后释放鼠标。 在操作期间,会触发一些事件类型,有一些事件类型可能会被多次触发(比如{{event("drag")}} 和 {{event("dragover")}} 事件类型)。 @@ -48,11 +48,11 @@ HTML 的拖拽接口有 {{domxref("DragEvent")}}, {{domxref("DataTransfer")}}, { {{domxref("DataTransfer")}} 和 {{domxref("DataTransferItem")}} 接口的一个主要的不同是前者使用同步的 {{domxref("DataTransfer.getData","getData()")}} 方法去得到拖拽项的数据,而后者使用异步的 {{domxref("DataTransferItem.getAsString","getAsString()")}} 方法得到拖拽项的数据。 -注意: {{domxref("DragEvent")}} 和 {{domxref("DataTransfer")}} 接口是所有桌面浏览器都支持的。但是, {{domxref("DataTransferItem")}} 和{{domxref("DataTransferItemList")}} 接口并不被所有浏览器支持。请移步 [互操作性](#互操作性) 了解更多关于拖拽行为的信息。 +注意:{{domxref("DragEvent")}} 和 {{domxref("DataTransfer")}} 接口是所有桌面浏览器都支持的。但是, {{domxref("DataTransferItem")}} 和{{domxref("DataTransferItemList")}} 接口并不被所有浏览器支持。请移步 [互操作性](#互操作性) 了解更多关于拖拽行为的信息。 ### Gecko 专用接口 -Mozilla 和 Firefox 支持一些不在标准拖放模型中的特性。 它们是一些帮助实现拖拽多个项目和拖拽非文本内容(如文件)的便捷函数。想要了解更多信息,请参见 [拖放多个项目](/zh-CN/docs/DragDrop/Dragging_and_Dropping_Multiple_Items)。另外,请查看 {{domxref("DataTransfer")}} 参考页以获取所有 [Gecko 专有属性](/zh-CN/docs/Web/API/DataTransfer#Gecko_properties) 和 [Gecko 专有方法](/zh-CN/docs/Web/API/DataTransfer#Gecko_methods)。 +Mozilla 和 Firefox 支持一些不在标准拖放模型中的特性。它们是一些帮助实现拖拽多个项目和拖拽非文本内容(如文件)的便捷函数。想要了解更多信息,请参见 [拖放多个项目](/zh-CN/docs/DragDrop/Dragging_and_Dropping_Multiple_Items)。另外,请查看 {{domxref("DataTransfer")}} 参考页以获取所有 [Gecko 专有属性](/zh-CN/docs/Web/API/DataTransfer#Gecko_properties) 和 [Gecko 专有方法](/zh-CN/docs/Web/API/DataTransfer#Gecko_methods)。 ## 基础 diff --git a/files/zh-cn/web/api/html_drag_and_drop_api/multiple_items/index.md b/files/zh-cn/web/api/html_drag_and_drop_api/multiple_items/index.md index fa102102bef517..6c68c9fc2d8516 100644 --- a/files/zh-cn/web/api/html_drag_and_drop_api/multiple_items/index.md +++ b/files/zh-cn/web/api/html_drag_and_drop_api/multiple_items/index.md @@ -29,7 +29,7 @@ dt.mozSetDataAt("text/plain", "Second data to drag", 1); event.dataTransfer.mozClearDataAt("text/plain", 1); ``` -注意:移除一个元素中的全部类型的数据项后将会使整个元素移除,导致后面的元素往前移动,索引将会产生变化(相应减小)。 例如: +注意:移除一个元素中的全部类型的数据项后将会使整个元素移除,导致后面的元素往前移动,索引将会产生变化(相应减小)。例如: ``` var dt = event.dataTransfer; diff --git a/files/zh-cn/web/api/html_drag_and_drop_api/recommended_drag_types/index.md b/files/zh-cn/web/api/html_drag_and_drop_api/recommended_drag_types/index.md index 6d524436ce1075..5939ac63f21deb 100644 --- a/files/zh-cn/web/api/html_drag_and_drop_api/recommended_drag_types/index.md +++ b/files/zh-cn/web/api/html_drag_and_drop_api/recommended_drag_types/index.md @@ -7,7 +7,7 @@ slug: Web/API/HTML_Drag_and_Drop_API/Recommended_drag_types HTML 拖放支持拖动各种类型的数据,包括纯文本,URL,HTML 代码,文件等。该文档描述了拖放常见数据类型的最佳做法。 -> **警告:** 本文档中包含一个**moz**前缀的所有方法和属性 (如**mozSetDataAt()**) 是 Gecko 的具体接口。 这些接口仅适用于基于 Gecko 的浏览器。 +> **警告:** 本文档中包含一个**moz**前缀的所有方法和属性 (如**mozSetDataAt()**) 是 Gecko 的具体接口。这些接口仅适用于基于 Gecko 的浏览器。 ## 拖动文字 @@ -17,11 +17,11 @@ HTML 拖放支持拖动各种类型的数据,包括纯文本,URL,HTML 代 event.dataTransfer.setData("text/plain", "This is text to drag") ``` -拖动文本框中的文字和页面选中部分的文字是自动完成的, 所以你不需要手动处理这些拖动。 +拖动文本框中的文字和页面选中部分的文字是自动完成的,所以你不需要手动处理这些拖动。 如果应用和拖动目标不支持其它类型,推荐你使用 `text/plain` 类型的数据进行填充,否则将没有默认的替代文字。建议总是在最后添加原始文字类型的数据做为备选项(译者 plter 注:如果拖动开始时没有设置数据,则在有些浏览器中后续拖动相关事件可能不会触发)。 -注:在旧代码中,可能会使用 `text/unicode` 或者 `Text` 类型, 这两个与 `text/plain` 是一样的,并且应该被替换用于存储和提取数据。 +注:在旧代码中,可能会使用 `text/unicode` 或者 `Text` 类型,这两个与 `text/plain` 是一样的,并且应该被替换用于存储和提取数据。 ## 拖动链接 diff --git a/files/zh-cn/web/api/htmlanchorelement/hash/index.md b/files/zh-cn/web/api/htmlanchorelement/hash/index.md index b04ec90a3a7146..0245a3e3ee981c 100644 --- a/files/zh-cn/web/api/htmlanchorelement/hash/index.md +++ b/files/zh-cn/web/api/htmlanchorelement/hash/index.md @@ -7,7 +7,7 @@ slug: Web/API/HTMLAnchorElement/hash **`HTMLHyperlinkElementUtils.hash`** 属性返回一个包含“#”的 {{domxref("DOMString")}} , 后跟 URL 的片段标识符。 -片段没有[百分比解码](/zh-CN/docs/Glossary/percent-encoding)。如果 URL 没有包含片段标识符,这个属性为一个空的字符串, `""`. +片段没有[百分比解码](/zh-CN/docs/Glossary/percent-encoding)。如果 URL 没有包含片段标识符,这个属性为一个空的字符串,`""`. ## Syntax diff --git a/files/zh-cn/web/api/htmlanchorelement/search/index.md b/files/zh-cn/web/api/htmlanchorelement/search/index.md index 7d18bdfa80cac4..1fef1265165f75 100644 --- a/files/zh-cn/web/api/htmlanchorelement/search/index.md +++ b/files/zh-cn/web/api/htmlanchorelement/search/index.md @@ -5,7 +5,7 @@ slug: Web/API/HTMLAnchorElement/search {{ApiRef("URL API")}} -**`HTMLHyperlinkElementUtils.search`** 属性是一个搜索字符串,也叫做查询字符串, 它是一个 {{domxref("USVString")}} ,包含 `'?'` 和随后的 URL 参数。 +**`HTMLHyperlinkElementUtils.search`** 属性是一个搜索字符串,也叫做查询字符串,它是一个 {{domxref("USVString")}} ,包含 `'?'` 和随后的 URL 参数。 ## 语法 @@ -36,4 +36,4 @@ let result = anchor.search; ## 相关链接 -- 它属于{{domxref("HTMLHyperlinkElementUtils")}} mixin 。 +- 它属于{{domxref("HTMLHyperlinkElementUtils")}} mixin。 diff --git a/files/zh-cn/web/api/htmlareaelement/index.md b/files/zh-cn/web/api/htmlareaelement/index.md index a73ccc201d882e..b869b493c7a66c 100644 --- a/files/zh-cn/web/api/htmlareaelement/index.md +++ b/files/zh-cn/web/api/htmlareaelement/index.md @@ -14,9 +14,9 @@ _从它的父对象{{domxref("HTMLElement")}}继承的,还有从{{domxref("URL - {{domxref("HTMLAreaElement.accessKey")}} - : 值为一个 {{domxref("DOMString")}} 类型,包含了一个简单的字符代表键盘上的一个按键,相当于快捷键。 - {{domxref("HTMLAreaElement.alt")}} - - : 值为一个{{domxref("DOMString")}} 类型,代表了 {{ htmlattrxref("alt", "area") }} HTML 属性,,包含一个 area 对象显示异常的情况下显示的备用文本字符串。 + - : 值为一个{{domxref("DOMString")}} 类型,代表了 {{ htmlattrxref("alt", "area") }} HTML 属性,包含一个 area 对象显示异常的情况下显示的备用文本字符串。 - {{domxref("HTMLAreaElement.coords")}} - - : 值为一个 {{domxref("DOMString")}} 类型,代表了 {{ htmlattrxref("coords", "area") }} HTML 属性, 包含了定义热区相关的坐标。 + - : 值为一个 {{domxref("DOMString")}} 类型,代表了 {{ htmlattrxref("coords", "area") }} HTML 属性,包含了定义热区相关的坐标。 - {{domxref("HTMLAreaElement.download")}} {{experimental_inline}} - : 值为一个 {{domxref("DOMString")}} 类型,表明此资源是将要被下载的资源而不是显示在浏览器页面中。值为下载保存文件的推荐文件名。如果名字在操作系统里不是一个合格的文件名格式,浏览器将会做相应的修改。 - {{domxref("URLUtils.hash")}} diff --git a/files/zh-cn/web/api/htmlaudioelement/audio/index.md b/files/zh-cn/web/api/htmlaudioelement/audio/index.md index dab040ba6e67ec..ea63b797a06465 100644 --- a/files/zh-cn/web/api/htmlaudioelement/audio/index.md +++ b/files/zh-cn/web/api/htmlaudioelement/audio/index.md @@ -30,7 +30,7 @@ audioObj = new Audio(url); 提供三种方法给开发者,判断音频文件是否已经加载,允许开始回放: -- 检测 {{domxref("HTMLMediaElement.readyState", "readyState")}} 属性的值. 如果值是 `HTMLMediaElement.HAVE_FUTURE_DATA`,说明有足够的数据开始回放并能至少播放一小段时间。如果值是 `HTMLMediaElement.HAVE_ENOUGH_DATA`,根据当前的下载速率,说明有足够的数据,你可以无干扰地播放至结束。 +- 检测 {{domxref("HTMLMediaElement.readyState", "readyState")}} 属性的值。如果值是 `HTMLMediaElement.HAVE_FUTURE_DATA`,说明有足够的数据开始回放并能至少播放一小段时间。如果值是 `HTMLMediaElement.HAVE_ENOUGH_DATA`,根据当前的下载速率,说明有足够的数据,你可以无干扰地播放至结束。 - 监听 {{domxref("HTMLMediaElement.canplay_event", "canplay")}} 事件。当足够的音频数据被发送至 `