diff --git a/files/zh-cn/.markdownlint.jsonc b/files/zh-cn/.markdownlint.jsonc index 2ae0cc6dff75e8..90b36b52b2b091 100644 --- a/files/zh-cn/.markdownlint.jsonc +++ b/files/zh-cn/.markdownlint.jsonc @@ -1,5 +1,8 @@ { "extends": "../../.markdownlint.jsonc", + "no-trailing-punctuation": { + "punctuation": ".,;:。," + }, "search-replace": { "rules": [ { diff --git a/files/zh-cn/glossary/grid/index.md b/files/zh-cn/glossary/grid/index.md index 28bd3bc765dcb8..f67e127aaf9356 100644 --- a/files/zh-cn/glossary/grid/index.md +++ b/files/zh-cn/glossary/grid/index.md @@ -11,9 +11,7 @@ slug: Glossary/Grid 如果开发者将内容放置在显式网格之外,或者依赖自动布局的话,网格法 (grid algorithm) 将需要创建额外的 row 或者 column、 {{glossary("grid tracks", "tracks")}} 来包含显示网格之外的内容 {{glossary("grid item", "grid items")}},为此将在隐式网格 (implicit grid) 中创建额外的轨道 (tracks)。_当内容添加到了已定义的 tracks 之外的时候,隐式网格 (implicit grid) 会被自动创建。_ -下面的例子创建了一个有两行三列的显式网格*。*由于超过显式网格可容纳的六个条目,_此网格中的第三行将是一个隐式网格行轨道 (implicit grid_ row track) - -_(注:在容器 div 上用 row 和 column 定义的网格总数,等于 行数乘以列数 个。比如一个容器 div 定义了 2 行 \* 3 列 = 6 个网格,这 6 个就是显式网格,但是假如里面有 8 个 子 div,多出来那 2 个就叫做隐式网格。)_ +下面的例子创建了一个有两行三列的显式网格。由于超过显式网格可容纳的六个条目,此网格中的第三行将是一个*隐式网格*行轨道(implicit grid row track)。 ## 示例 diff --git a/files/zh-cn/learn/css/first_steps/styling_a_biography_page/index.md b/files/zh-cn/learn/css/first_steps/styling_a_biography_page/index.md index 405e50dd3a625f..f2be55585bac50 100644 --- a/files/zh-cn/learn/css/first_steps/styling_a_biography_page/index.md +++ b/files/zh-cn/learn/css/first_steps/styling_a_biography_page/index.md @@ -39,7 +39,7 @@ slug: Learn/CSS/First_steps/Styling_a_biography_page > **备注:** 如果遇到困难,你可以向我求助——参见本页下面的[测评或请求帮助](#测评或请求帮助)部分。 -**让我们来学一些 CSS 样式** +### 让我们来学一些 CSS 样式 接下来的实例是一个个人主页,我们用 CSS 设定它的样式。以下是我用到的一些 CSS 属性,通过这些链接,你可以打开相应的 MDN 页面了解更多。 @@ -83,7 +83,7 @@ slug: Learn/CSS/First_steps/Styling_a_biography_page - 你希望测试的例子的在网络编辑器上的链接。这是很好的做法,因为如果不让帮助你的看到你的程序,他们就很难帮助你解决程序的问题。 - 你的网页的测评页面链接,这样我们就可以找到你所求助的问题。 -**接下来是什么?** +## 接下来是什么? 恭喜你完成了第一个模块的学习。现在你应该对 CSS 有了一个大致的了解 并且能够了解在样式表中发生的大多数事情。在下一个模块[CSS 构建](/zh-CN/docs/Learn/CSS/Building_blocks)中,我们将对一些关键区域进行深入的学习。 diff --git a/files/zh-cn/learn/html/multimedia_and_embedding/video_and_audio_content/index.md b/files/zh-cn/learn/html/multimedia_and_embedding/video_and_audio_content/index.md index 91fe2050eb8eec..c0cd7e11452be3 100644 --- a/files/zh-cn/learn/html/multimedia_and_embedding/video_and_audio_content/index.md +++ b/files/zh-cn/learn/html/multimedia_and_embedding/video_and_audio_content/index.md @@ -282,7 +282,7 @@ WEBVTT > **备注:** 文本轨道会使你的网站更容易被搜索引擎抓取到({{glossary("SEO")}}),由于搜索引擎的文本抓取能力非常强大,使用文本轨道甚至可以让搜索引擎通过视频的内容直接链接。 -## 实践学习:在你的网站上嵌入你自己的视频或音频。 +## 实践学习:在你的网站上嵌入你自己的视频或音频 在这个实践学习当中,我们希望你能够走出去,并且记录一些你自己的视频或者音频 — 如今,大多数手机都能够非常方便的记录视频或者音频,并且你可以将他们上传到你的电脑上面,你可以使用这些功能来记录你的视频或音频。在这时候,你可能需要做一些格式转换,如果是视频的话,你需要将它们转化为 WebM 或者 MP4,如果是音频的话,你需要将它们转化为 MP3 或者 Ogg。不过你并不需要担心,有许多的程序都能够帮你解决这些问题,例如 [Miro Video Converter](http://www.mirovideoconverter.com/) 和 [Audacity](https://sourceforge.net/projects/audacity/)。我们非常希望你能够亲自动手实现它。 diff --git a/files/zh-cn/learn/tools_and_testing/cross_browser_testing/introduction/index.md b/files/zh-cn/learn/tools_and_testing/cross_browser_testing/introduction/index.md index ef850e5d9a8c18..644ea863c2dca0 100644 --- a/files/zh-cn/learn/tools_and_testing/cross_browser_testing/introduction/index.md +++ b/files/zh-cn/learn/tools_and_testing/cross_browser_testing/introduction/index.md @@ -66,7 +66,7 @@ slug: Learn/Tools_and_testing/Cross_browser_testing/Introduction 一个项目的测试和排错工作流可以大致分为如下四个阶段(这只是粗略划分——因人而异): -**初步规划>开发>测试/查错>修复/迭代** +**初步规划** > **开发** > **测试/查错** > **修复/迭代** 步骤 2 到步骤 4 在必要时应多次重复直到开发完成。我们会在后续章节详细探讨测试程序的不同之处,但现在我们只概述每个阶段可能出现的问题。 diff --git a/files/zh-cn/mozilla/add-ons/webextensions/anatomy_of_a_webextension/index.md b/files/zh-cn/mozilla/add-ons/webextensions/anatomy_of_a_webextension/index.md index c1a375c9e4ce37..7abd851483bb63 100644 --- a/files/zh-cn/mozilla/add-ons/webextensions/anatomy_of_a_webextension/index.md +++ b/files/zh-cn/mozilla/add-ons/webextensions/anatomy_of_a_webextension/index.md @@ -47,7 +47,7 @@ slug: Mozilla/Add-ons/WebExtensions/Anatomy_of_a_WebExtension 与此同时,你也可以先引入一个后台页面,再在后台页面中引入脚本。这样做能为后台脚本添加 ES 6 模块支持,算是一个优势。 -**manifest.json** +manifest.json 的内容如下: ```json // manifest.json @@ -57,7 +57,7 @@ slug: Mozilla/Add-ons/WebExtensions/Anatomy_of_a_WebExtension } ``` -**background-page.html** +background-page.html 的内容如下: ```html @@ -83,7 +83,7 @@ slug: Mozilla/Add-ons/WebExtensions/Anatomy_of_a_WebExtension #### 跨域访问 -后台脚本可以向任何拥有[主机权限](/zh-CN/docs/Mozilla/Add-ons/WebExtensions/manifest.json/permissions#%E4%B8%BB%E6%9C%BA%E6%9D%83%E9%99%90)的主机发送 XHR 请求。 +后台脚本可以向任何拥有[主机权限](/zh-CN/docs/Mozilla/Add-ons/WebExtensions/manifest.json/permissions#主机权限)的主机发送 XHR 请求。 #### 网页内容 diff --git a/files/zh-cn/mozilla/firefox/releases/59/index.md b/files/zh-cn/mozilla/firefox/releases/59/index.md index 32f1b0ab41e4e3..850aa0b1e38e62 100644 --- a/files/zh-cn/mozilla/firefox/releases/59/index.md +++ b/files/zh-cn/mozilla/firefox/releases/59/index.md @@ -90,13 +90,13 @@ _无变化。_ ### SVG -_无变化_ +_无变化。_ ## Mozilla 和附加组件开发者应该注意的变化 ### WebExtensions -_无变化_ +_无变化。_ ## 参见 diff --git a/files/zh-cn/web/api/canvasgradient/index.md b/files/zh-cn/web/api/canvasgradient/index.md index db1ff10040eae5..fb4833b3a5a43c 100644 --- a/files/zh-cn/web/api/canvasgradient/index.md +++ b/files/zh-cn/web/api/canvasgradient/index.md @@ -13,12 +13,12 @@ _不透明对象,没有暴露的属性。_ ## 方法 -_没有继承的方法_ +_没有继承的方法。_ - {{domxref("CanvasGradient.addColorStop()")}} - : 添加一个由偏移(`offset`)和颜色(`color`)定义的断点到渐变中。如果偏移值不在 0 到 1 之间,将抛出`INDEX_SIZE_ERR 错误,如果颜色值不能被解析为有效的 CSS 颜色值 {{cssxref("<color>")}},将抛出 SYNTAX_ERR`错误。 -## 标准 +## 规范 {{Specifications}} @@ -26,7 +26,7 @@ _没有继承的方法_ {{Compat}} -## 请参考 +## 参见 -- 创建方法在{{domxref("CanvasRenderingContext2D")}}. -- {{HTMLElement("canvas")}} 元素及其有关接口{{domxref("HTMLCanvasElement")}}. +- 创建方法在 {{domxref("CanvasRenderingContext2D")}}。 +- {{HTMLElement("canvas")}} 元素及其有关接口 {{domxref("HTMLCanvasElement")}}。 diff --git a/files/zh-cn/web/api/canvasrenderingcontext2d/putimagedata/index.md b/files/zh-cn/web/api/canvasrenderingcontext2d/putimagedata/index.md index b4c8a4693930c5..49a3ab7e5f31d1 100644 --- a/files/zh-cn/web/api/canvasrenderingcontext2d/putimagedata/index.md +++ b/files/zh-cn/web/api/canvasrenderingcontext2d/putimagedata/index.md @@ -16,10 +16,8 @@ void ctx.putImageData(imagedata, dx, dy, dirtyX, dirtyY, dirtyWidth, dirtyHeight ### 参数 -**imageData** - -{{domxref("ImageData")}} ,包含像素值的数组对象。 - +- `imageData` + - : {{domxref("ImageData")}},包含像素值的数组对象。 - `dx` - : 源图像数据在目标画布中的位置偏移量(x 轴方向的偏移量)。 - `dy` diff --git a/files/zh-cn/web/api/document/adoptnode/index.md b/files/zh-cn/web/api/document/adoptnode/index.md index 3ff3cdfac507f5..ce4a1573740ce3 100644 --- a/files/zh-cn/web/api/document/adoptnode/index.md +++ b/files/zh-cn/web/api/document/adoptnode/index.md @@ -7,64 +7,25 @@ slug: Web/API/Document/adoptNode 从其他的 document 文档中获取一个节点。该节点以及它的子树上的所有节点都会从原文档删除 (如果有这个节点的话), 并且它的[`ownerDocument`](/zh-CN/docs/DOM/Node.ownerDocument) 属性会变成当前的 document 文档。之后你可以把这个节点插入到当前文档中。 -**从 Gecko 1.9 (Firefox 3) 开始支持** - ## 语法 -```plain -node = document.adoptNode(externalNode); +```js-nolint +adoptNode(externalNode) ``` -- `node` - - : 导入当前文档的新节点。新节点的 [`parentNode`](/zh-CN/DOM/Node.parentNode) 是 `null`, 因为它还没有插入当前文档的文档树中,属于游离状态。 - `externalNode` - : 将要从外部文档导入的节点。 -## 例子 +## 示例 ```js -// 该函数用来从本文档的第一个 iframe 中获取第一个 element 元素, -// 并插入到当前文档树中 -function getEle() { - var iframe = document.getElementsByTagName("iframe")[0], - ele = iframe.contentWindow.document.body.firstElementChild; - if (ele) { - document.body.appendChild(document.adoptNode(ele)); - } else { - alert("没有更多元素了"); - } -} -document.getElementById("move").onclick = getEle; -``` +const iframe = document.querySelector("iframe"); +const iframeImages = iframe.contentDocument.querySelectorAll("img"); +const newParent = document.getElementById("images"); -HTML 文档 - -```html -// index.html - - - -
-{{domxref("Boolean")}} |
- 表示[`autoplay`](/zh-CN/docs/Web/HTML/Element/video#autoplay)的 HTML
- 属性,表明在视频加载可用时是否不中断地自动播放资源
+ 表示 |
@@ -57,8 +61,8 @@ _从父级 {{domxref("HTMLElement")}}, {{domxref("Element")}}, {{domxref("Node")
{{domxref("Boolean")}} |
映射在 HTML
- 标签。[`controls`](/zh-CN/docs/Web/HTML/Element/video#controls)属性控制是否显示用户播放界面的控制
- HTML
+ 标签。controls
+ 属性控制是否显示用户播放界面的控制 HTML
|
|||
defaultMuted |
{{domxref("Boolean")}} |
- 映射在 HTML 标签上。 [`muted`](/zh-CN/docs/Web/HTML/Element/video#muted)
+ 映射在 HTML 标签上。muted
属性表示媒体声音被播放时是否应该被静音。这个属性不能动态设置静音/不静音,如果希望设置静音/不静音,请使用
muted 属性
|
@@ -144,7 +148,7 @@ _从父级 {{domxref("HTMLElement")}}, {{domxref("Element")}}, {{domxref("Node")
loop |
{{domxref("Boolean")}} |
- 会映射在 HTML 标签 [`loop`](/zh-CN/docs/Web/HTML/Element/video#loop) 属性
+ 会映射在 HTML 标签 loop 属性
, 决定该媒体是否循环播放。
|
mediaGroup |
{{domxref("DOMString")}} |
- 反映在 HTML [`mediagroup`](/zh-CN/docs/Web/HTML/Element/video#mediagroup)
+ 反映在 HTML mediagroup
标签上。
表示元素所归属的分组,同一组的媒体元素会共享同一个控制器(controller )。
|
@@ -217,7 +221,7 @@ _从父级 {{domxref("HTMLElement")}}, {{domxref("Element")}}, {{domxref("Node")
- mozSampleRate {{readonlyinline}}
+ mozSampleRate {{readonlyinline}}
{{ non-standard_inline() }}
|
long |
@@ -226,7 +230,7 @@ _从父级 {{domxref("HTMLElement")}}, {{domxref("Element")}}, {{domxref("Node")
|||||
mozSrcObject {{ non-standard_inline() }} |
+ mozSrcObject {{ non-standard_inline() }} |
{{domxref("MediaStream")}} | Lets you set or get the @@ -315,10 +319,10 @@ _从父级 {{domxref("HTMLElement")}}, {{domxref("Element")}}, {{domxref("Node") | preload |
{{ domxref("DOMString") }} |
- Reflects the [`preload`](/zh-CN/docs/Web/HTML/Element/video#preload) HTML
+ Reflects the preload HTML
attribute, indicating what data should be preloaded, if any. Possible
values are: none , metadata , auto .
- See [`preload`](/zh-CN/docs/Web/HTML/Element/video#preload) attribute
+ See preload attribute
documentation for details.
|
src |
{{ domxref("DOMString") }} |
- Reflects the [`src`](/zh-CN/docs/Web/HTML/Element/video#src) HTML
+ Reflects the src HTML
attribute, containing the URL of a media resource to use. Gecko
implements a similar functionality for streams:
mozSrcObject .
diff --git a/files/zh-cn/web/api/htmlmediaelement/paused/index.md b/files/zh-cn/web/api/htmlmediaelement/paused/index.md
index e2d78ffdba03dd..02b63f2f559df2 100644
--- a/files/zh-cn/web/api/htmlmediaelement/paused/index.md
+++ b/files/zh-cn/web/api/htmlmediaelement/paused/index.md
@@ -5,24 +5,16 @@ slug: Web/API/HTMLMediaElement/paused
{{APIRef("HTML DOM")}}
-`属性 (只读)HTMLMediaElement.paused` 告诉视频是否正在暂停
+只读属性 `HTMLMediaElement.paused` 指示视频是否正在暂停。
-## 语法
+## 返回值
-```plain
-var isPaused = audioOrVideo.paused
-```
-
-### 返回值
-
-类型{{domxref("Boolean")}}。`true` 暂停中 `false` 没有暂停
-
-_仅限暂停状态 因网络原因造成的缓冲状态仍然会告诉你不在暂停状态_
+布尔值。`true` 表示正在暂停,`false` 表示没有暂停。
-## 例子
+## 示例
```js
-var obj = document.createElement("video");
+const obj = document.createElement("video");
console.log(obj.paused); // true
```
@@ -34,6 +26,6 @@ console.log(obj.paused); // true
{{Compat}}
-## 参考文档
+## 参见
-- The interface defining it, {{domxref("HTMLMediaElement")}}.
+- {{domxref("HTMLMediaElement")}}:用于定义 `HTMLMediaElement.paused` 属性的接口。
diff --git a/files/zh-cn/web/api/htmltemplateelement/index.md b/files/zh-cn/web/api/htmltemplateelement/index.md
index 16758b6beef883..e81b541619b47d 100644
--- a/files/zh-cn/web/api/htmltemplateelement/index.md
+++ b/files/zh-cn/web/api/htmltemplateelement/index.md
@@ -5,20 +5,20 @@ slug: Web/API/HTMLTemplateElement
{{APIRef("Web Components")}}
-可以使用**`HTMLTemplateElement`** 接口来访问 HTML {{HTMLElement("template")}}元素的内容。
+可以使用 **`HTMLTemplateElement`** 接口来访问 HTML {{HTMLElement("template")}} 元素的内容。
{{InheritanceDiagram(600, 120)}}
## 属性
-_这个接口继承了 {{domxref("HTMLElement")}}的属性_
+_这个接口继承了 {{domxref("HTMLElement")}} 的属性。_
- {{domxref("HTMLTemplateElement.content")}}{{readonlyinline}}
- - : {{domxref("DocumentFragment")}}对象,包裹了模板元素{{HTMLElement("template")}}的内容。这个属性是只读的 DOM 树。
+ - : {{domxref("DocumentFragment")}} 对象,包裹了模板元素 {{HTMLElement("template")}} 的内容。这个属性是只读的 DOM 树。
-## Methods
+## 方法
-_这个接口继承了 {{domxref("HTMLElement")}}的方法。_
+_这个接口继承了 {{domxref("HTMLElement")}} 的方法。_
## 规范
diff --git a/files/zh-cn/web/api/inputevent/iscomposing/index.md b/files/zh-cn/web/api/inputevent/iscomposing/index.md
index 4301529d0ffc45..a3ca0e56b218c5 100644
--- a/files/zh-cn/web/api/inputevent/iscomposing/index.md
+++ b/files/zh-cn/web/api/inputevent/iscomposing/index.md
@@ -1,36 +1,32 @@
---
-title: InputEvent.isComposing
+title: InputEvent:isComposing 属性
slug: Web/API/InputEvent/isComposing
---
-{{APIRef("DOM Events")}}
+{{APIRef("UI Events")}}
-The **`InputEvent.isComposing`** read-only property returns a {{jsxref("Boolean")}} value indicating if the event is fired after [`compositionstart`](/zh-CN/docs/Web/API/Element/compositionstart_event) and before [`compositionend`](/zh-CN/docs/Web/API/Element/compositionend_event).
+**`InputEvent.isComposing`** 只读属性返回一个布尔值,表示事件是否是在 {{domxref("Element/compositionstart_event", "compositionstart")}} 之后且在 {{domxref("Element/compositionend_event", "compositionend")}} 之前触发的。
-## 这是一个只读属性,返回 boolean 类型。表示正处于输入事件的开始与结束之间,表示正在输入状态。
+## 返回值
-## Syntax
+一个布尔值。
-```plain
-var bool = event.isComposing;
-```
-
-## Example
+## 示例
```js
-var inputEvent = new InputEvent("syntheticInput", false);
-console.log(inputEvent.isComposing); // return false
+const inputEvent = new InputEvent("syntheticInput", false);
+console.log(inputEvent.isComposing); // 返回 false
```
-## Specifications
+## 规范
{{Specifications}}
-## Browser compatibility
+## 浏览器兼容性
{{Compat}}
-## See also
+## 参见
-- [`compositionstart`](/zh-CN/docs/Web/API/Element/compositionstart_event) and [`compositionend`](/zh-CN/docs/Web/API/Element/compositionend_event)
+- {{domxref("Element/compositionstart_event", "compositionstart")}} 和 {{domxref("Element/compositionend_event", "compositionend")}}
- {{domxref("InputEvent")}}
diff --git a/files/zh-cn/web/api/mathmlelement/index.md b/files/zh-cn/web/api/mathmlelement/index.md
index 9a6e58b73e6aaa..937be9b4353550 100644
--- a/files/zh-cn/web/api/mathmlelement/index.md
+++ b/files/zh-cn/web/api/mathmlelement/index.md
@@ -9,11 +9,11 @@ slug: Web/API/MathMLElement
## 属性
-_This interface has no properties, but inherits properties from: {{DOMxRef("DocumentAndElementEventHandlers")}}, {{DOMxRef("Element")}}, {{DOMxRef("ElementCSSInlineStyle")}}, {{DOMxRef("GlobalEventHandlers")}}, {{DOMxRef("HTMLOrForeignElement")}}_
+_This interface has no properties, but inherits properties from: {{DOMxRef("DocumentAndElementEventHandlers")}}, {{DOMxRef("Element")}}, {{DOMxRef("ElementCSSInlineStyle")}}, {{DOMxRef("GlobalEventHandlers")}}, {{DOMxRef("HTMLOrForeignElement")}}._
## 方法
-_This interface has no methods, but inherits methods from: {{DOMxRef("DocumentAndElementEventHandlers")}}, {{DOMxRef("Element")}}, {{DOMxRef("ElementCSSInlineStyle")}}, {{DOMxRef("GlobalEventHandlers")}}, {{DOMxRef("HTMLOrForeignElement")}}_
+_This interface has no methods, but inherits methods from: {{DOMxRef("DocumentAndElementEventHandlers")}}, {{DOMxRef("Element")}}, {{DOMxRef("ElementCSSInlineStyle")}}, {{DOMxRef("GlobalEventHandlers")}}, {{DOMxRef("HTMLOrForeignElement")}}._
## 示例
diff --git a/files/zh-cn/web/api/messageport/index.md b/files/zh-cn/web/api/messageport/index.md
index 4dc139ec21392b..f39d37394a911f 100644
--- a/files/zh-cn/web/api/messageport/index.md
+++ b/files/zh-cn/web/api/messageport/index.md
@@ -11,7 +11,7 @@ slug: Web/API/MessagePort
## 方法
-_继承自父类 {{domxref("EventTarget")}} 的方法_
+_继承自父类 {{domxref("EventTarget")}} 的方法。_
- {{domxref("MessagePort.postMessage")}}
- : 从端口发送一条消息,并且可选是否将对象的所有权交给其他浏览器上下文。
@@ -22,7 +22,7 @@ _继承自父类 {{domxref("EventTarget")}} 的方法_
## 事件回调
-_继承自父类 {{domxref("EventTarget")}} 的事件回调_
+_继承自父类 {{domxref("EventTarget")}} 的事件回调。_
- {{domxref("MessagePort.onmessage")}}
- : 是一个 {{domxref("EventListener")}}, 当类型为 `message` 的 {{domxref("MessageEvent")}} 在该端口触发时,它将会被调用 ── 也就是说,该端口收到了一条消息。
@@ -38,18 +38,18 @@ _继承自父类 {{domxref("EventTarget")}} 的事件回调_
- : 当 `MessagePort` 对象收到无法被反序列化的消息时触发。
也可以通过 {{domxref("MessagePort.onmessageerror","onmessageerror")}} 属性使用。
-## 例子
+## 示例
-在下面的例子中,你可以看到一个使用 {{domxref("MessageChannel.MessageChannel","MessageChannel()")}} 构造函数创建出的新 channel.
+在下面的示例中,你可以看到一个使用 {{domxref("MessageChannel.MessageChannel","MessageChannel()")}} 构造函数创建出的新通道。
-当 IFrame 加载完成后,我们给 {{domxref("MessageChannel.port1")}} 注册了一个 {{domxref("MessagePort.onmessage","onmessage")}} 回调,并且使用 {{domxref("window.postMessage")}} 方法把 {{domxref("MessageChannel.port2")}} 和一条消息一起传给 IFrame.
+当 IFrame 加载完成后,我们给 {{domxref("MessageChannel.port1")}} 注册了一个 {{domxref("MessagePort.onmessage","onmessage")}} 回调,并且使用 {{domxref("window.postMessage")}} 方法把 {{domxref("MessageChannel.port2")}} 和一条消息一起传给 IFrame。
当从 IFrame 收到消息时,`onMessage` 方法会把消息输出到一个段落里。
-```plain
+```js
var channel = new MessageChannel();
-var output = document.querySelector('.output');
-var iframe = document.querySelector('iframe');
+var output = document.querySelector(".output");
+var iframe = document.querySelector("iframe");
// 等待 iframe 加载
iframe.addEventListener("load", onLoad);
@@ -59,10 +59,11 @@ function onLoad() {
channel.port1.onmessage = onMessage;
// 把 port2 传给 iframe
- iframe.contentWindow.postMessage('Hello from the main page!', '*', [channel.port2]);
+ iframe.contentWindow.postMessage("Hello from the main page!", "*", [
+ channel.port2,
+ ]);
}
-
// 处理 port1 收到的消息
function onMessage(e) {
output.innerHTML = e.data;
diff --git a/files/zh-cn/web/api/navigator/getusermedia/index.md b/files/zh-cn/web/api/navigator/getusermedia/index.md
index 9189a5ef2959fb..d8e9f3f2d71517 100644
--- a/files/zh-cn/web/api/navigator/getusermedia/index.md
+++ b/files/zh-cn/web/api/navigator/getusermedia/index.md
@@ -5,7 +5,7 @@ slug: Web/API/Navigator/getUserMedia
> **备注:** 此 API 已更名为 {{domxref("MediaDevices.getUserMedia()")}}。请使用那个版本进行替代!这个已废弃的 API 版本仅为了向后兼容而存在。
-{{APIRef}}{{deprecated_header}}
+{{APIRef("Media Capture and Streams")}}{{deprecated_header}}
**Navigator.getUserMedia()** 方法提醒用户需要使用音频(0 或者 1)和(0 或者 1)视频输入设备,比如相机,屏幕共享,或者麦克风。如果用户给予许可,**successCallback** 回调就会被调用,{{domxref("MediaStream")}} 对象作为回调函数的参数。如果用户拒绝许可或者没有媒体可用,**errorCallback** 就会被调用,类似的,**`PermissionDeniedError`** 或者 **`NotFoundError`** 对象作为它的参数。注意,有可能以上两个回调函数都不被调用,因为不要求用户一定作出选择(允许或者拒绝)。
@@ -17,59 +17,59 @@ navigator.getUserMedia ( constraints, successCallback, errorCallback );
### 参数
-**constraints**
+- `constraints`
+ - : {{domxref("MediaStreamConstaints")}} 对象指定了请求使用媒体的类型,还有每个类型的所需要的参数。具体细节请参见 {{domxref("MediaDevices.getUserMedia()")}} 方法下面的 [constraints](/zh-CN/docs/Web/API/MediaDevices/getUserMedia#Parameters) 部分。
+- `successCallback`
-{{domxref("MediaStreamConstaints")}} 对象指定了请求使用媒体的类型,还有每个类型的所需要的参数。具体细节请参见 {{domxref("MediaDevices.getUserMedia()")}} 方法下面的 [constraints](/zh-CN/docs/Web/API/MediaDevices/getUserMedia#Parameters) 部分。
+ - : 当调用成功后,successCallback 中指定的函数就被调用,包含了媒体流的 {{domxref("MediaStream")}} 对象作为它的参数,你可以把媒体流对象赋值给合适的元素,然后使用它,就像下面的例子一样:
-**successCallback**
+ ```js
+ function(stream) {
+ var video = document.querySelector('video');
+ video.src = window.URL.createObjectURL(stream);
+ video.onloadedmetadata = function(e) {
+ // Do something with the video here.
+ };
+ }
+ ```
-当调用成功后,successCallback 中指定的函数就被调用,包含了媒体流的 {{domxref("MediaStream")}} 对象作为它的参数,你可以把媒体流对象赋值给合适的元素,然后使用它,就像下面的例子一样:
+- `errorCallback`
-```
-function(stream) {
- var video = document.querySelector('video');
- video.src = window.URL.createObjectURL(stream);
- video.onloadedmetadata = function(e) {
- // Do something with the video here.
- };
-}
-```
+ - : 当调用失败,errorCallback 中指定的函数就会被调用,{{domxref("MediaStreamError")}} 对象作为它唯一的参数;此对象基于 {{domxref("DOMException")}} 对象构建。错误码描述见参见以下:
-**errorCallback**
-
-当调用失败,errorCallback 中指定的函数就会被调用,{{domxref("MediaStreamError")}} 对象作为它唯一的参数;此对象基于 {{domxref("DOMException")}} 对象构建。错误码描述见参见以下:
-
-| Error | Description |
-| ----------------------- | ---------------------------------- |
-| `PermissionDeniedError` | 使用媒体设备请求被用户或者系统拒绝 |
-| `NotFoundError` | 找不到 constraints 中指定媒体类型 |
+ | 错误 | 描述 |
+ | ----------------------- | ---------------------------------- |
+ | `PermissionDeniedError` | 使用媒体设备请求被用户或者系统拒绝 |
+ | `NotFoundError` | 找不到 constraints 中指定媒体类型 |
## 示例
### 宽度和高度
-使用 getUserMedia() 的示例,包括了可以适用于多种浏览器前缀的代码。注意这种使用方式已经被废除,现代的使用方法请参见 {{domxref("MediaDevices.getUserMedia()")}} 下面的[示例](/zh-CN/docs/Web/API/MediaDevices/getUserMedia#Frame_rate)部分。
+使用 `getUserMedia()` 的示例,包括了可以适用于多种浏览器前缀的代码。注意这种使用方式已经被废除,现代的使用方法请参见 {{domxref("MediaDevices.getUserMedia()")}} 下面的[示例](/zh-CN/docs/Web/API/MediaDevices/getUserMedia#Frame_rate)部分。
-```
-navigator.getUserMedia = navigator.getUserMedia ||
- navigator.webkitGetUserMedia ||
- navigator.mozGetUserMedia;
+```js
+navigator.getUserMedia =
+ navigator.getUserMedia ||
+ navigator.webkitGetUserMedia ||
+ navigator.mozGetUserMedia;
if (navigator.getUserMedia) {
- navigator.getUserMedia({ audio: true, video: { width: 1280, height: 720 } },
- function(stream) {
- var video = document.querySelector('video');
- video.src = window.URL.createObjectURL(stream);
- video.onloadedmetadata = function(e) {
- video.play();
- };
- },
- function(err) {
- console.log("The following error occurred: " + err.name);
- }
- );
+ navigator.getUserMedia(
+ { audio: true, video: { width: 1280, height: 720 } },
+ function (stream) {
+ var video = document.querySelector("video");
+ video.src = window.URL.createObjectURL(stream);
+ video.onloadedmetadata = function (e) {
+ video.play();
+ };
+ },
+ function (err) {
+ console.log("The following error occurred: " + err.name);
+ },
+ );
} else {
- console.log("getUserMedia not supported");
+ console.log("getUserMedia not supported");
}
```
@@ -96,9 +96,9 @@ if (navigator.getUserMedia) {
> **警告:** 新代码应当使用 {{domxref("Navigator.mediaDevices.getUserMedia()")}} 替代。
-## 更多参见
+## 参见
-- {{domxref("MediaDevices.getUserMedia()")}} 替代了当前废弃的版本。
-- [WebRTC](/zh-CN/docs/WebRTC) - the introductory page to the API
-- [MediaStream API](/zh-CN/docs/WebRTC/MediaStream_API) - the API for the media stream objects
-- [Taking webcam photos](/zh-CN/docs/WebRTC/taking_webcam_photos) - a tutorial on using `getUserMedia() for taking photos rather than video.`
+- {{domxref("MediaDevices.getUserMedia()")}} 代替了这个已弃用的方法。
+- [WebRTC](/zh-CN/docs/Web/API/WebRTC_API)——该 API 的介绍页面
+- [媒体捕捉与媒体流 API](/zh-CN/docs/Web/API/Media_Capture_and_Streams_API)——媒体流对象的 API
+- [使用网络摄像头拍摄照片](/zh-CN/docs/Web/API/Media_Capture_and_Streams_API/Taking_still_photos)——使用 `getUserMedia()` 拍摄照片(而不是视频)的教程。
diff --git a/files/zh-cn/web/api/selection/modify/index.md b/files/zh-cn/web/api/selection/modify/index.md
index 8ea5bda084ccc3..1638890186c050 100644
--- a/files/zh-cn/web/api/selection/modify/index.md
+++ b/files/zh-cn/web/api/selection/modify/index.md
@@ -37,7 +37,7 @@ selection.modify("extend", "forward", "word");
## 规范
-_无_
+_无。_
## 浏览器兼容性
diff --git a/files/zh-cn/web/api/svgaelement/index.md b/files/zh-cn/web/api/svgaelement/index.md
index a1ecc8485efb31..44bbcf4ef8a639 100644
--- a/files/zh-cn/web/api/svgaelement/index.md
+++ b/files/zh-cn/web/api/svgaelement/index.md
@@ -5,7 +5,7 @@ slug: Web/API/SVGAElement
{{APIRef("SVG")}}
-## SVG a DOM 接口
+## SVG DOM 接口
`SVGAElement`接口提供了对{{ SVGElement("a") }}元素的属性的访问,而且还提供了操作该元素的方法。
@@ -55,45 +55,26 @@ slug: Web/API/SVGAElement
这个接口同样会从父级元素 *{{domxref("SVGGraphicsElement")}}*继承属性,并实现 _{{domxref("SVGURIReference")}}_ 和 _{{domxref("HTMLHyperlinkElementUtils")}}_ 中的功能。
-**{{domxref("SVGAElement.download")}}**
-
-参见 {{domxref("HTMLAnchorElement.download")}}
-
-**{{domxref("SVGAElement.href")}}**
-
-See {{domxref("HTMLAnchorElement.href")}}
-
-**{{domxref("SVGAElement.hreflang")}}**
-
-是一个反映 `hreflang` 属性的字符串(DOMString),表示链接资源的语言种类。
-
-**{{domxref("SVGAElement.ping")}}**
-
-是一个反映 ping 值的字符串(DOMString),包含以空格分隔开的 URL 列表,当超链接可以被跟踪时,浏览器会(在后台)发送有 PING 主体的 {{HTTPMethod("POST")}} 的请求,一般用于追踪。
-
-**{{domxref("SVGAElement.referrerPolicy")}}**
-
-参见 {{domxref("HTMLAnchorElement.referrerPolicy")}}
-
-**{{domxref("SVGAElement.rel")}}**
-
-参见 {{domxref("HTMLAnchorElement.rel")}}
-
-**{{domxref("SVGAElement.relList")}}**
-
-参见{{domxref("HTMLAnchorElement.relList")}}
-
-**{{domxref("SVGAElement.target")}} {{readonlyInline}}**
-
-它和特定元素的 {{SVGAttr("target")}} 属性相同
-
-**{{domxref("SVGAElement.text")}}**
-
-是一个字符串(DOMString),作为 {{domxref("Node.textContent")}} 属性的代名词。
-
-**{{domxref("SVGAElement.type")}}**
-
-是一个反映 `type` 属性的字符串(DOMString),表示链接资源的 MIME 种类。
+- {{domxref("SVGAElement.download")}}
+ - : 参见 {{domxref("HTMLAnchorElement.download")}}
+- {{domxref("SVGAElement.href")}}
+ - : 参见 {{domxref("HTMLAnchorElement.href")}}
+- {{domxref("SVGAElement.hreflang")}}
+ - : 是一个反映 `hreflang` 属性的字符串(DOMString),表示链接资源的语言种类。
+- {{domxref("SVGAElement.ping")}}
+ - : 是一个反映 ping 值的字符串(DOMString),包含以空格分隔开的 URL 列表,当超链接可以被跟踪时,浏览器会(在后台)发送有 PING 主体的 {{HTTPMethod("POST")}} 的请求,一般用于追踪。
+- {{domxref("SVGAElement.referrerPolicy")}}
+ - : 参见 {{domxref("HTMLAnchorElement.referrerPolicy")}}
+- {{domxref("SVGAElement.rel")}}
+ - : 参见 {{domxref("HTMLAnchorElement.rel")}}
+- {{domxref("SVGAElement.relList")}}
+ - : 参见{{domxref("HTMLAnchorElement.relList")}}
+- {{domxref("SVGAElement.target")}} {{readonlyInline}}
+ - : 它和特定元素的 {{SVGAttr("target")}} 属性相同
+- {{domxref("SVGAElement.text")}}
+ - : 是一个字符串(DOMString),作为 {{domxref("Node.textContent")}} 属性的代名词。
+- {{domxref("SVGAElement.type")}}
+ - : 是一个反映 `type` 属性的字符串(DOMString),表示链接资源的 MIME 种类。
## 方法
@@ -127,4 +108,4 @@ linkRef.onclick = function () {
## 参见
-- {{ SVGElement("a") }} SVG Element
+- {{ SVGElement("a") }} SVG 元素
diff --git a/files/zh-cn/web/api/webgl_api/tutorial/adding_2d_content_to_a_webgl_context/index.md b/files/zh-cn/web/api/webgl_api/tutorial/adding_2d_content_to_a_webgl_context/index.md
index 40850a2b903f2e..5cca59f1664619 100644
--- a/files/zh-cn/web/api/webgl_api/tutorial/adding_2d_content_to_a_webgl_context/index.md
+++ b/files/zh-cn/web/api/webgl_api/tutorial/adding_2d_content_to_a_webgl_context/index.md
@@ -231,7 +231,7 @@ export { initBuffers };
当上一步完成,我们创建一个 Javascript 数组去记录每一个正方体的每一个顶点。然后将其转化为 WebGL 浮点型类型的数组,并将其传到 gl 对象的 {{domxref("WebGLRenderingContext.bufferData()", "bufferData()")}} 方法来建立对象的顶点。
-**绘制场景**
+## 绘制场景
当着色器和物体都创建好后,我们可以开始渲染这个场景了。因为我们这个例子不会产生动画,所以 drawScene() 方法非常简单。它还使用了几个工具函数,稍后我们会介绍。
diff --git a/files/zh-cn/web/api/webgl_api/webgl_model_view_projection/index.md b/files/zh-cn/web/api/webgl_api/webgl_model_view_projection/index.md
index 0c3f9a1b62207d..54975fca98a678 100644
--- a/files/zh-cn/web/api/webgl_api/webgl_model_view_projection/index.md
+++ b/files/zh-cn/web/api/webgl_api/webgl_model_view_projection/index.md
@@ -669,8 +669,6 @@ gl_Position = projection * model * vec4(position, 1.0);
我们没有向后和向左移动相机,而是对盒子应用了逆变换:我们将盒子向后移动 1 米,然后向右移动 10 厘米。从两个物体的角度来看,结果是一样的。
-**<<< insert image(s) here >>>**
-
最后一步是创建**视图矩阵**,该矩阵将转换场景中的对象,以便对它们进行定位以模拟相机当前位置与方向。目前的代码可以在世界空间中移动立方体并投影所有内容以获得透视图,但我们仍然无法移动相机。
想象一下使用物理摄像机拍摄电影。你可以自由地将相机放到任何你想放置的位置,并对准任何你选择的方向。为了在 3D 图形中对此进行仿真,我们使用视图矩阵来模拟物理相机的位置和旋转。
@@ -733,7 +731,7 @@ gl_Position = projection * view * model * vec4(position, 1.0);
- 向视图矩阵中添加一些旋转矩阵以四处看看。
- 最后,跟踪鼠标的位置。使用 2 个旋转矩阵可以根据用户鼠标在屏幕上的位置上下移动相机。
-**参见**
+## 参见
- [WebGL](/zh-CN/docs/Web/API/WebGL_API)
- [3D projection](https://zh.wikipedia.org/wiki/3D_projection)
diff --git a/files/zh-cn/web/api/websockets_api/writing_websocket_servers/index.md b/files/zh-cn/web/api/websockets_api/writing_websocket_servers/index.md
index 32d474f39dd410..c3281c3802ca3a 100644
--- a/files/zh-cn/web/api/websockets_api/writing_websocket_servers/index.md
+++ b/files/zh-cn/web/api/websockets_api/writing_websocket_servers/index.md
@@ -170,9 +170,7 @@ WebSocket 扩展和子协议是在握手过程中通过头信息进行协商的
Think of an extension as compressing a file before e-mailing it to someone. Whatever you do, you're sending the _same_ data in different forms. The recipient will eventually be able to get the same data as your local copy, but it is sent differently. That's what an extension does. WebSockets defines a protocol and a simple way to send data, but an extension such as compression could allow sending the same data but in a shorter format.
-> **备注:** 扩展在规范的 5.8, 9, 11.3.2, and 11.4 进行了解释
-
-_TODO_
+> **备注:** 扩展在规范的第 5.8、9、11.3.2 和 11.4 条进行了解释。
### 子协议
diff --git a/files/zh-cn/web/api/webvr_api/index.md b/files/zh-cn/web/api/webvr_api/index.md
index 6a711f0fe6dcfc..5cb80d2ba0f265 100644
--- a/files/zh-cn/web/api/webvr_api/index.md
+++ b/files/zh-cn/web/api/webvr_api/index.md
@@ -5,31 +5,19 @@ slug: Web/API/WebVR_API
{{DefaultAPISidebar("WebVR API")}}{{SeeCompatTable}}
-**WebVR API 能为虚拟现实设备的渲染提供支持 — 例如像 Oculus Rift 或者**HTC Vive **这样的头戴式设备与 Web apps 的连接。它能让开发者将位置和动作信息转换成 3D 场景中的运动。基于这项技术能产生很多有趣的应用,比如虚拟的产品展示,可交互的培训课程,以及超强沉浸感的第一人称游戏。**
+WebVR API 能为虚拟现实设备的渲染提供支持——例如像 Oculus Rift 或者 HTC Vive 这样的头戴式设备与 Web 应用的连接。它能让开发者将位置和动作信息转换成 3D 场景中的运动。基于这项技术能产生很多有趣的应用,比如虚拟的产品展示,可交互的培训课程,以及超强沉浸感的第一人称游戏。
## 概念及使用方法
-**【K】**
-
![Sketch of a person in a chair with wearing goggles labelled "Head mounted display (HMD)" facing a monitor with a webcam labelled "Position sensor"](hw-setup.png)
-Any VR devices attached to your computer will be returned by the {{domxref("Navigator.getVRDevices()")}} method. This returns an array of objects to represent the attached devices, which inherit from the general {{domxref("VRDevice")}} object — generally a head mounted display will have two devices — the head mounted display itself, represented by {{domxref("HMDVRDevice")}}, and a position sensor camera that keeps track of your head position, represented by {{domxref("PositionSensorVRDevice")}}.
-
-**连接到电脑的所有 VR 设备都将由 {{domxref("Navigator.getVRDevices()")}} 方法返回。这个方法将返回一个包含了所有已连接设备的对象数组,每个设备对应一个对象,该对象继承自 {{domxref("VRDevice")}} — 通常一个头显将包含两个设备 — 头显自身由 {{domxref("HMDVRDevice")}} 表示,和一个跟踪头部位置的位置捕捉传感器,由 {{domxref("PositionSensorVRDevice")}} 表示。**
-
-The {{domxref("PositionSensorVRDevice")}} object contains the {{domxref("PositionSensorVRDevice.getState","getState()")}} method, which returns a {{domxref("VRPositionState")}} object — this represents the sensor’s state at a given timestamp, and includes properties containing useful data such as current velocity, acceleration, and orientation, useful for updating the rendering of a scene on each frame according to the movement of the VR head mounted display.
-
-**{{domxref("PositionSensorVRDevice")}} 对象有一个 {{domxref("PositionSensorVRDevice.getState","getState()")}} 方法,该方法返回一个{{domxref("VRPositionState")}} 对象 — 这个对象代表位置传感器在指定时刻的状态,包含了一些十分有用的信息,例如速度、加速度以及运动方向,可用于根据头部运动刷新画面显示。**
+连接到电脑的所有 VR 设备都将由 {{domxref("Navigator.getVRDevices()")}} 方法返回。这个方法将返回一个包含了所有已连接设备的对象数组,每个设备对应一个对象,该对象继承自 {{domxref("VRDevice")}}——通常一个头显将包含两个设备——头显自身由 {{domxref("HMDVRDevice")}} 表示,和一个跟踪头部位置的位置捕捉传感器,由 {{domxref("PositionSensorVRDevice")}} 表示。
-The {{domxref("HMDVRDevice.getEyeParameters()")}} method returns a {{domxref("VREyeParameters")}} object, which can be used to return field of view information — how much of the scene the head mounted display can see. The {{domxref("VREyeParameters.currentFieldOfView")}} returns a {{domxref("VRFieldOfView")}} object that contains 4 angles describing the current view from a center point. You can also change the field of view using {{domxref("HMDVRDevice.setFieldOfView()")}}.
+{{domxref("PositionSensorVRDevice")}} 对象有一个 {{domxref("PositionSensorVRDevice.getState","getState()")}} 方法,该方法返回一个{{domxref("VRPositionState")}} 对象——这个对象代表位置传感器在指定时刻的状态,包含了一些十分有用的信息,例如速度、加速度以及运动方向,可用于根据头部运动刷新画面显示。
-**{{domxref("HMDVRDevice.getEyeParameters()")}} 方法返回一个 {{domxref("VREyeParameters")}} 对象,可用于获取显示区域的信息 — 头显可以看到多少画面。 {{domxref("VREyeParameters.currentFieldOfView")}} 返回一个 {{domxref("VRFieldOfView")}} 对象,该对象包含了 4 个角度信息来描述当前的显示区域。你可以用 {{domxref("HMDVRDevice.setFieldOfView()")}} 来改变当前的显示区域。**
+{{domxref("HMDVRDevice.getEyeParameters()")}} 方法返回一个 {{domxref("VREyeParameters")}} 对象,可用于获取显示区域的信息——头显可以看到多少画面。 {{domxref("VREyeParameters.currentFieldOfView")}} 返回一个 {{domxref("VRFieldOfView")}} 对象,该对象包含了 4 个角度信息来描述当前的显示区域。你可以用 {{domxref("HMDVRDevice.setFieldOfView()")}} 来改变当前的显示区域。
-> **备注:** To find out more about using these interfaces in your own app, read [Using the WebVR API](/zh-CN/docs/Web/API/WebVR_API/Using_the_WebVR_API). To learn more about the basic concepts behind VR, read [WebVR concepts](/zh-CN/docs/Web/API/WebVR_API/WebVR_concepts).
->
-> 注释:要了解更多关于如何在你的应用程序中使用这些接口,请阅读文章[Using the WebVR API](/zh-CN/docs/Web/API/WebVR_API/Using_the_WebVR_API). 要学习更多关于 VR 技术背后的基础概念,请阅读文章 [WebVR concepts](/zh-CN/docs/Web/API/WebVR_API/WebVR_concepts).
-
-### Using controllers: Combining WebVR with the Gamepad API
+> **备注:** 要了解更多关于如何在你的应用程序中使用这些接口,请阅读文章[使用 WebVR API](/zh-CN/docs/Web/API/WebVR_API/Using_the_WebVR_API)。要学习更多关于 VR 技术背后的基础概念,请阅读文章 [WebVR 概念](/zh-CN/docs/Web/API/WebVR_API/WebVR_concepts)。
### 使用控制器:将 WebVR 与 Gamepad API 相结合
@@ -40,44 +28,28 @@ Many WebVR hardware setups feature controllers that go along with the headset. T
## WebVR 接口
- {{domxref("Navigator.getVRDevices")}}
- - : Returns a promise that resolves to an array of objects representing the VR devices attached to the computer.
- **返回一个 Promise 对象,并通过 resolve 方式返回参数,参数为链接到电脑的 VR 设备数组。**
+ - : 返回一个会兑现连接到电脑的 VR 设备数组的 promise。
- {{domxref("VRDevice")}}
- - : A generic VR device, includes information such as device IDs and descriptions. Inherited by `HMDVRDevice` and `PositionSensorVRDevice`.
- **返回一个包括了 VR 设备 IDs,描述等信息的类。HMDVRDevice 和 PositionSensorVRDevice 继承了 VRDevice。**
+ - : 返回一个包括了 VR 设备 IDs,描述等信息的类。由 `HMDVRDevice` 和 `PositionSensorVRDevice` 继承。
- {{domxref("HMDVRDevice")}}
- - : Represents a head mounted display, providing access to information about each eye, and the current field of view.
- **头戴设备。提供设备双眼、当前 FOV(field of view)信息。**
+ - : 头戴设备。提供设备双眼、当前视野(FOV)信息。
- {{domxref("PositionSensorVRDevice")}}
- - : Represents the position sensor for the VR hardware, allowing access to information such as position and orientation.
- **VR 设备的位置传感器。获取位置、方向信息。**
+ - : VR 设备的位置传感器。获取位置、方向信息。
- {{domxref("VRPose")}}
- - : Represents the position state at a given timestamp (which includes orientation, position, velocity, and acceleration.)
- **根据一个时间戳返回包括(方向、位置、速度、加速度)的状态。**
+ - : 根据一个时间戳返回包括(方向、位置、速度、加速度)的状态。
- {{domxref("VREyeParameters")}}
- - : Provides access to all the information required to correctly render a scene for each given eye, including field of view information.
- **给双眼提供正确渲染场景的所有信息,包括 FOV。**
+ - : 给双眼提供正确渲染场景的所有信息,包括 FOV。
- {{domxref("VRFieldOfView")}}
- - : Represents a field of view defined by 4 different degree values describing the view from a center point.
- **返回以视窗的中心点为基点的,表示 FOV 的 4 个角度值(downDegrees, leftDegrees, rightDegrees, upDegrees)。**
+ - : 返回以视窗的中心点为基点的,表示 FOV 的 4 个角度值(downDegrees, leftDegrees, rightDegrees, upDegrees)。
- {{domxref("VRFieldOfViewReadOnly")}}
- - : Contains the raw definition for the degree value properties required to define a field of view. Inherited by `VRFieldOfView`.
- **定义一个 FOV 必须的角度属性。VRFieldOfView 继承了 VRFieldOfViewReadOnly。**
+ - : 定义一个 FOV 必须的角度属性。由 `VRFieldOfView` 继承。
## 示例
-**【K】**
-
-You can find a number of examples at these Github repos:
+你可以在 Github 的协议中找到一系列的案例:
-**你可以在 Github 的协议中找到一系列的案例:**
-
-- [mdn/webvr-tests](https://github.com/mdn/webvr-tests): Simple demos built to illiustrate basic feature usage.
-- **[mdn/webvr-tests](https://github.com/mdn/webvr-tests): 简单构建的 demos 用于阐明基本的使用方法。**
--
-- [MozVR team](https://github.com/MozVR/): More advanced demos, the WebVR spec source, and more!
-- **[MozVR team](https://github.com/MozVR/): 更多复杂的 demos,关于 WebVR 特别的资源,以及更多的内容!**
-- **【K】**
+- [mdn/webvr-tests](https://github.com/mdn/webvr-tests):简单构建的演示用于阐明基本的使用方法。
+- [MozVR team](https://github.com/MozVR/):更多复杂的演示,关于 WebVR 特别的资源,以及更多的内容!
## 规范
@@ -89,19 +61,12 @@ You can find a number of examples at these Github repos:
{{Compat}}
-## 相关文章
-
-- [WebVR environment setup](/zh-CN/docs/Web/API/WebVR_API/WebVR_environment_setup)
-- **建立 WEBVR 的运行环境。**
-- [WebVR concepts](/zh-CN/docs/Web/API/WebVR_API/WebVR_concepts)
-- **WEBVR 的相关概念。**
-- [Using the WebVR API](/zh-CN/docs/Web/API/WebVR_API/Using_the_WebVR_API)
-- **怎样使用 WEBVR API。**
-- [MozVr.com](http://mozvr.com/) — demos, downloads, and other resources from the Mozilla VR team.
-- **[MozVr.com](http://mozvr.com/) — demos,下载,以及其他的来自 MOZILLA VR 团队的资源。**
-- [Console Game on Web](http://dsmu.me/ConsoleGameOnWeb/) — a collection of interesting game concept demos, some of which include WebVR.
-- **[Console Game on Web](http://dsmu.me/ConsoleGameOnWeb/) — 一系列有趣的概念游戏 DEMO 的收集,其中有些包括了 WEBVR。**
-- [threejs-vr-boilerplate](https://github.com/MozVR/vr-web-examples/tree/master/threejs-vr-boilerplate) — a very useful starter template for writing WebVR apps into.
-- **[threejs-vr-boilerplate](https://github.com/MozVR/vr-web-examples/tree/master/threejs-vr-boilerplate) — 一个当你编写 WEBVR APP 时,非常有用的用于开始编程的模板。**
-- [Oculus Rift homepage](https://developer.oculus.com/)
-- **[Oculus Rift](https://developer.oculus.com/) 主页**
+## 参见
+
+- [建立 WebVR 的运行环境](/zh-CN/docs/Web/API/WebVR_API/WebVR_environment_setup)
+- [WebVR 的相关概念](/zh-CN/docs/Web/API/WebVR_API/WebVR_concepts)
+- [怎样使用 WebVR API](/zh-CN/docs/Web/API/WebVR_API/Using_the_WebVR_API)
+- [MozVr.com](http://mozvr.com/)——演示、下载,以及其他的来自 MOZILLA VR 团队的资源。
+- [Console Game on Web](http://dsmu.me/ConsoleGameOnWeb/)——一系列有趣的概念游戏演示的集合,其中有些包括了 WebVR。
+- [threejs-vr-boilerplate](https://github.com/MozVR/vr-web-examples/tree/master/threejs-vr-boilerplate)——一个当你编写 WebVR APP 时,非常有用的用于开始编程的模板。
+- [Oculus Rift 主页](https://developer.oculus.com/)
diff --git a/files/zh-cn/web/api/window/ondragdrop/index.md b/files/zh-cn/web/api/window/ondragdrop/index.md
index 41b7538bd9020a..0beff2188f5736 100644
--- a/files/zh-cn/web/api/window/ondragdrop/index.md
+++ b/files/zh-cn/web/api/window/ondragdrop/index.md
@@ -9,45 +9,44 @@ slug: Web/API/Window/ondragdrop
一个事件处理程序,用于将拖放事件发送到窗口。
-**语法**
+## 语法
-```
+```js-nolint
window.ondragdrop = funcRef;
window.addEventListener("dragdrop", funcRef, useCapturing);
```
-- funcRef
+- `funcRef`
- : 要注册的事件处理函数。
-[Gecko](/zh-CN/docs/Web/API/Window/en/Gecko)([Firefox bug 112288](https://bugzil.la/112288)) 中未实现`window.ondragdrop`属性和`ondragdrop`属性,你必须使用`addEventListener`。有关详细信息,请参见[addEventListener](/zh-CN/docs/Web/API/Window/en/DOM/element.addEventListener)。
+Firefox 中未实现 `window.ondragdrop` 属性和 `ondragdrop` 属性([Firefox bug 112288](https://bugzil.la/112288)),你必须使用 `addEventListener`。有关详细信息,请参见 [addEventListener](/zh-CN/docs/Web/API/EventTarget/addEventListener)。
-**示例**
+## 示例
### 在拖放时触发 alert
在此示例中,事件侦听器被添加到窗口(事件目标)。如果从外部源将选项卡,链接,标记的文本或文件拖放到此窗口上,则会触发警报。注意`event.stopPropagation()`; 阻止浏览器加载放置的标签,链接或文件。
-```
+```html
-
-... content ...
-... content ...
-... content ...
+
```
若是這些規則中設定了同一種特性值,則會依序以明確性(specificity)、定義位置先後決定顯示方式,與`class` 屬性中的次序無關。
-#### 無用樣式
+## 無用樣式
即使樣式規則已經正確設定完畢,還是可能為瀏覽器所忽略,此時通常是經過語法及優先權法則判斷後的正常現象。
@@ -87,26 +90,25 @@ CSS 並不支援「以另一個樣式規則為基準」的樣式設定法。 (
- 使用 `*` 選取符
- CSS 明確性
-你可以使用 [DOM 觀察器](zh_tw/DOM_%e8%a7%80%e5%af%9f%e5%99%a8) 的 _CSS Style Rules_ 來檢查上述問題。
+你可以使用 [DOM 觀察器](https://firefox-source-docs.mozilla.org/devtools-user/page_inspector/how_to/examine_and_edit_css/index.html) 的 _CSS Style Rules_ 來檢查上述問題。
-**HTML 元素層次問題**
+### HTML 元素層次問題
此時 CSS 樣式套用與否與元素的層次大有相關,請留意:套用到子元素的樣式必定會蓋過母元素的樣式,跟明確性或 CSS 規則的優先權無關。
-```plain
-#section { font-weight: bold; }
-.redtext { font-weight: normal; color: red; }
+```html
+#section { font-weight: bold; } .redtext { font-weight: normal; color: red; }
- 粗體、
- 正常紅字、
- 又見粗體
+ 粗體、
+ 正常紅字、
+ 又見粗體
```
如果你的 HTML 層級錯綜複雜,發生規則意外被忽略的情形時,請檢查元素層級問題。可能有某個子元素套上了不該用的樣式。
-**樣式規則重新定義**
+### 樣式規則重新定義
在 CSS 樣式表中,先後次序**非常**重要。如果你定義了某規則後又重新定義一次,則晚定義的才算數。
@@ -127,7 +129,7 @@ CSS 並不支援「以另一個樣式規則為基準」的樣式設定法。 (
為避免此類錯誤發生,每個特定選取符請僅定義一次樣式,集中特性一次定義也便於管理些。
-**特性的簡寫法**
+### 特性的簡寫法
使用簡寫法來定義樣式簡明扼要,是個不錯的方法。你也可以用簡寫法設定某組特性中的部分特性值,但須留意其他沒寫到的部分會自動採用預設值。這表示之前的規則中為某單一特性定義的值可能失效。
@@ -144,14 +146,14 @@ CSS 並不支援「以另一個樣式規則為基準」的樣式設定法。 (
前一個例子中,套用到不同元素範圍的同族特性是問題所在,但就算特性都寫在同一條規則裡也可能出問題,因為順序**真的**很重要。
-```plain
+```css
#section {
- font-weight: bold;
- font: 12px Verdana; /* 有了這行,font-weight 又回到預設的 normal 了 */
+ font-weight: bold;
+ font: 12px Verdana; /* 有了這行,font-weight 又回到預設的 normal 了 */
}
```
-**使用 `*` 選取符**
+### 使用 `*` 選取符
`*` 選取符表示任何元素皆符合,但使用上應多加小心。
@@ -172,7 +174,7 @@ body * { font-weight: normal; }
在此例中,選取符為 `body *` 的規則會套用到所有 `body` 內的元素,也包括 _redtext_,所以原先套用到 _boldtext_ 的 `font-weight: bold;` 就被覆蓋為 `font-weight: normal;` 了。
-**CSS 明確性**
+### CSS 明確性
如果某元素會套用好幾條規則,則相衝突的特性就要靠規則的明確性來分高下。行內樣式(放在 HTML 各標籤的 `style` 屬性中)優先權最高,其次是以 `id` 做選取符的規則,再其次是以 `class` 套用的類別,最後則是單純以元素名稱當選取符的規則。
@@ -186,6 +188,6 @@ div { color: black; }
如果樣式規則的選取符分成好幾段,計算方式就更為複雜一些。需要瞭解完整資訊者,請參考 [CSS 2.1 規格書的 6.4.3 一節](https://www.w3.org/TR/CSS21/cascade.html#specificity)。
-#### -moz-\* 特性是什麼玩意?
+## -moz-\* 特性是什麼玩意?
-請見 [Mozilla 擴充的 CSS](zh_tw/Mozilla_%e6%93%b4%e5%85%85%e7%9a%84_CSS)。由於這些擴充規格不是 W3C 標準的一部分,因此並不建議使用。
+請見 [Mozilla 擴充的 CSS](/zh-TW/docs/Web/CSS/Mozilla_Extensions)。由於這些擴充規格不是 W3C 標準的一部分,因此並不建議使用。
diff --git a/files/zh-tw/mozilla/add-ons/webextensions/anatomy_of_a_webextension/index.md b/files/zh-tw/mozilla/add-ons/webextensions/anatomy_of_a_webextension/index.md
index b0ff56006dbdb5..e66cce47e87ecb 100644
--- a/files/zh-tw/mozilla/add-ons/webextensions/anatomy_of_a_webextension/index.md
+++ b/files/zh-tw/mozilla/add-ons/webextensions/anatomy_of_a_webextension/index.md
@@ -46,7 +46,7 @@ slug: Mozilla/Add-ons/WebExtensions/Anatomy_of_a_WebExtension
然而,你也可以先載入一個後台頁面,然後在後台頁面中載入腳本。這樣的做法能為後台腳本提供 ES 6 模組的支援,算是一个優點。
-**manifest.json**
+manifest.json:
```json
// manifest.json
@@ -56,7 +56,7 @@ slug: Mozilla/Add-ons/WebExtensions/Anatomy_of_a_WebExtension
}
```
-**background-page.html**
+background-page.html:
```html
diff --git a/files/zh-tw/web/api/canvas_api/tutorial/basic_animations/index.md b/files/zh-tw/web/api/canvas_api/tutorial/basic_animations/index.md
index e9e094aa0f8a4d..60935adab38189 100644
--- a/files/zh-tw/web/api/canvas_api/tutorial/basic_animations/index.md
+++ b/files/zh-tw/web/api/canvas_api/tutorial/basic_animations/index.md
@@ -334,7 +334,7 @@ function draw() {
```
-**Live sample**
+##### 結果
{{EmbedLiveSample("循環景色", "830", "230")}}
diff --git a/files/zh-tw/web/api/customevent/index.md b/files/zh-tw/web/api/customevent/index.md
index f06d074ff00be7..ef1360710a6b40 100644
--- a/files/zh-tw/web/api/customevent/index.md
+++ b/files/zh-tw/web/api/customevent/index.md
@@ -18,7 +18,7 @@ slug: Web/API/CustomEvent
## 屬性
-_此介面繼承了其父介面 {{domxref("Event")}} 的屬性_
+_此介面繼承了其父介面 {{domxref("Event")}} 的屬性。_
- {{domxref("CustomEvent.initCustomEvent()")}} {{deprecated_inline}}
- : 初始化一個`CustomEvent`物件。若該事件已經被觸發,則不會進行任何動作。
@@ -31,7 +31,7 @@ _此介面繼承了其父介面 {{domxref("Event")}} 的屬性_
{{Compat}}
-## 延伸閱讀
+## 參見
- {{domxref("Window.postMessage()")}}
- [Creating and triggering events](/zh-TW/docs/Web/Events/Creating_and_triggering_events)
diff --git a/files/zh-tw/web/api/documentfragment/index.md b/files/zh-tw/web/api/documentfragment/index.md
index a0f8108dd58ab3..2c6bf39d18c3f3 100644
--- a/files/zh-tw/web/api/documentfragment/index.md
+++ b/files/zh-tw/web/api/documentfragment/index.md
@@ -33,7 +33,7 @@ _This interface has no specific properties, but inherits those of its parent,_ _
## 方法
-_This interface inherits the methods of its parent, {{domxref("Node")}}, and implements those of the {{domxref("ParentNode")}} interface*.*_
+_This interface inherits the methods of its parent, {{domxref("Node")}}, and implements those of the {{domxref("ParentNode")}} interface._
- {{domxref("DocumentFragment.find()")}} {{experimental_inline}}
- : Returns the first matching {{domxref("Element")}} in the tree of the `DocumentFragment`.
diff --git a/files/zh-tw/web/api/keyboardevent/index.md b/files/zh-tw/web/api/keyboardevent/index.md
index bfe4740f8d19b8..4a182582229fd9 100644
--- a/files/zh-tw/web/api/keyboardevent/index.md
+++ b/files/zh-tw/web/api/keyboardevent/index.md
@@ -9,14 +9,14 @@ slug: Web/API/KeyboardEvent
> **備註:** `KeyboardEvent` 僅顯示在鍵盤上發生的事。當你需要進行文字輸入的操作,請使用 HTML5 [`input`](/zh-TW/docs/DOM/DOM_event_reference/input) event 代替 `KeyboardEvent` 。舉例來說,當使用者在手寫系統,例如平板電腦,輸入文字時,並不會啟動 key events 。
-## Constructor
+## 建構子
- {{domxref("KeyboardEvent.KeyboardEvent", "KeyboardEvent()")}}
- - : 建立一 `KeyboardEvent` object。
+ - : 建立一 `KeyboardEvent` 物件。
-## Methods
+## 方法
-_本介面( interface)亦繼承其父, {{domxref("UIEvent")}} 和 {{domxref("Event")}} ,的 methods_
+_本介面(interface)亦繼承其父 {{domxref("UIEvent")}} 和 {{domxref("Event")}} 的方法。_
- {{domxref("KeyboardEvent.getModifierState()")}}
- : 回傳一 {{jsxref("Boolean")}}。用來表示當事件建立時,修飾鍵(例如 Alt、 Shift、 Ctrl、或是 Meta) 是否是按下的。
diff --git a/files/zh-tw/web/javascript/guide/using_promises/index.md b/files/zh-tw/web/javascript/guide/using_promises/index.md
index e67c2ad8e90d58..73fa4741a34395 100644
--- a/files/zh-tw/web/javascript/guide/using_promises/index.md
+++ b/files/zh-tw/web/javascript/guide/using_promises/index.md
@@ -71,8 +71,6 @@ let promise2 = doSomething().then(successCallback, failureCallback);
在古時候,多個非同步函數會使用 Callback 方式,導致波動拳問題:
-_(原文 Pyramid of Doom 查無中文翻譯,以較常見之波動拳取代)_
-
```js
doSomething(function (result) {
doSomethingElse(
diff --git a/files/zh-tw/web/javascript/reference/global_objects/array/index.md b/files/zh-tw/web/javascript/reference/global_objects/array/index.md
index 546eeaa6199fe4..28f4815b421db5 100644
--- a/files/zh-tw/web/javascript/reference/global_objects/array/index.md
+++ b/files/zh-tw/web/javascript/reference/global_objects/array/index.md
@@ -7,112 +7,9 @@ slug: Web/JavaScript/Reference/Global_Objects/Array
JavaScript 中的 **`Array`** 全域物件被用於建構陣列;陣列為高階(high-level)、似列表(list-like)的物件。陣列在 Javascript 裡面並沒有固定的長度與型別。由於陣列的長度可以隨時被改變,所以並不能保證陣列的密度。這取決於開發者如何使用陣列。一般來說,這是個非常方便的特性,但如果這並不適用於你的開發工作,你也許會考慮使用型別陣列。
-**建立陣列**
-
-```js
-var fruits = ["Apple", "Banana"];
-
-console.log(fruits.length);
-// 2
-```
-
-**(透過索引)取得陣列項目**
-
-```js
-var first = fruits[0];
-// Apple
-
-var last = fruits[fruits.length - 1];
-// Banana
-```
-
-**迭代陣列**
-
-```js
-fruits.forEach(function (item, index, array) {
- console.log(item, index);
-});
-// Apple 0
-// Banana 1
-```
-
-**加入項目至陣列末端**
-
-```js
-var newLength = fruits.push("Orange");
-// ["Apple", "Banana", "Orange"]
-```
-
-**移除陣列末端項目**
-
-```js
-var last = fruits.pop(); // 移除 (最末端的) Orange
-// ["Apple", "Banana"];
-```
-
-**移除陣列前端項目**
-
-```js
-var first = fruits.shift(); // 移除 (最前端的) Apple
-// ["Banana"];
-```
-
-**加入項目至陣列前端**
-
-```js
-var newLength = fruits.unshift("Strawberry"); // 加到陣列前端
-// ["Strawberry", "Banana"];
-```
-
-**在陣列中尋找項目的索引**
-
-```js
-fruits.push("Mango");
-// ["Strawberry", "Banana", "Mango"]
-
-var pos = fruits.indexOf("Banana");
-// 1
-```
-
-**移除指定索引位置的項目**
-
-```js
-var removedItem = fruits.splice(pos, 1); // 移除 pos 起的 1 個項目
-
-// ["Strawberry", "Mango"]
-```
-
-**移除指定索引位置起的多個項目**
-
-```js
-var vegetables = ["Cabbage", "Turnip", "Radish", "Carrot"];
-console.log(vegetables);
-// ["Cabbage", "Turnip", "Radish", "Carrot"]
-
-var pos = 1,
- n = 2;
-
-var removedItems = vegetables.splice(pos, n);
-// 這就是移除項目的方式,
-// n 表示從該位置 (pos) 開始,一直到陣列的尾端有多少項目需要移除
-
-console.log(vegetables);
-// ["Cabbage", "Carrot"] (原始的陣列被改變)
-
-console.log(removedItems);
-// ["Turnip", "Radish"]
-```
-
-**複製陣列**
-
-```js
-var shallowCopy = fruits.slice(); // 這就是複製陣列的方式
-// ["Strawberry", "Mango"]
-```
-
## 語法
-```plain
+```js-nolint
[element0, element1, ..., elementN]
new Array(element0, element1[, ...[, elementN]])
new Array(arrayLength)
@@ -362,6 +259,100 @@ if (msgArray.length === 100) {
}
```
+### (透過索引)取得陣列項目
+
+```js
+var first = fruits[0];
+// Apple
+
+var last = fruits[fruits.length - 1];
+// Banana
+```
+
+### 迭代陣列
+
+```js
+fruits.forEach(function (item, index, array) {
+ console.log(item, index);
+});
+// Apple 0
+// Banana 1
+```
+
+### 加入項目至陣列末端
+
+```js
+var newLength = fruits.push("Orange");
+// ["Apple", "Banana", "Orange"]
+```
+
+### 移除陣列末端項目
+
+```js
+var last = fruits.pop(); // 移除(最末端的)Orange
+// ["Apple", "Banana"];
+```
+
+### 移除陣列前端項目
+
+```js
+var first = fruits.shift(); // 移除(最前端的)Apple
+// ["Banana"];
+```
+
+### 加入項目至陣列前端
+
+```js
+var newLength = fruits.unshift("Strawberry"); // 加到陣列前端
+// ["Strawberry", "Banana"];
+```
+
+### 在陣列中尋找項目的索引
+
+```js
+fruits.push("Mango");
+// ["Strawberry", "Banana", "Mango"]
+
+var pos = fruits.indexOf("Banana");
+// 1
+```
+
+### 移除指定索引位置的項目
+
+```js
+var removedItem = fruits.splice(pos, 1); // 移除 pos 起的 1 個項目
+
+// ["Strawberry", "Mango"]
+```
+
+### 移除指定索引位置起的多個項目
+
+```js
+var vegetables = ["Cabbage", "Turnip", "Radish", "Carrot"];
+console.log(vegetables);
+// ["Cabbage", "Turnip", "Radish", "Carrot"]
+
+var pos = 1,
+ n = 2;
+
+var removedItems = vegetables.splice(pos, n);
+// 這就是移除項目的方式,
+// n 表示從該位置開始,一直到陣列的尾端有多少項目需要移除
+
+console.log(vegetables);
+// ["Cabbage", "Carrot"](原始的陣列被改變)
+
+console.log(removedItems);
+// ["Turnip", "Radish"]
+```
+
+### 複製陣列
+
+```js
+var shallowCopy = fruits.slice(); // 這就是複製陣列的方式
+// ["Strawberry", "Mango"]
+```
+
### 建立二維陣列
以下範例會用字串產生一張西洋棋盤的二維陣列。第一步是將士兵 'p' 從 (6,4) 移動至 (4,4),然後清空原本的位置 (6,4)。
diff --git a/files/zh-tw/web/javascript/reference/global_objects/array/indexof/index.md b/files/zh-tw/web/javascript/reference/global_objects/array/indexof/index.md
index 2b3166eb236436..a30e258087c633 100644
--- a/files/zh-tw/web/javascript/reference/global_objects/array/indexof/index.md
+++ b/files/zh-tw/web/javascript/reference/global_objects/array/indexof/index.md
@@ -62,7 +62,7 @@ console.log(indices);
// [0, 2, 4]
```
-### 尋找元素是否存在於陣列中,若沒有則加入到陣列裡。
+### 尋找元素是否存在於陣列中,若沒有則加入到陣列裡
```js
function updateVegetablesCollection(veggies, veggie) {
diff --git a/files/zh-tw/web/javascript/reference/statements/continue/index.md b/files/zh-tw/web/javascript/reference/statements/continue/index.md
index da00270970523b..4f82c520144e32 100644
--- a/files/zh-tw/web/javascript/reference/statements/continue/index.md
+++ b/files/zh-tw/web/javascript/reference/statements/continue/index.md
@@ -3,6 +3,8 @@ title: continue 語法
slug: Web/JavaScript/Reference/Statements/continue
---
+{{jsSidebar("Statements")}}
+
`continue` 語法可用來重新開始 `while`、`do-while`、`for`、`label` 語法。
- 當你使用沒加標籤的 `continue` 時,他會終止這一次的最內層的 `while`、`do-while`、`for` 語法的反覆過程,並繼續執行下一次的反覆過程。與 `break` 語法相較之下,`continue` 不會終止整個循環的執行。在 `while` 循環中,他會跳回條件處。在 `for` 循環中,他會跳回遞增表達式。
@@ -13,7 +15,7 @@ slug: Web/JavaScript/Reference/Statements/continue
1. `continue`
2. `continue label`
-**範例 1**
+## 範例 1
以下範例示範加上 `continue` 語法的 `while` 循環,`continue` 語法會在 `i` 值為 3 時執行。因此,`n` 的值依序為 1、3、7、12。
@@ -27,7 +29,7 @@ while (i < 5) {
}
```
-**範例 2**
+## 範例 2
已加上標籤的語法 `checkiandj` 內含已加上標籤的語法 `checkj`。如果遇到 `continue`,程式會終止 `checkj` 這一次的反覆過程,並開始下一次的反覆過程。每當遇到 `continue`,就會反覆執行 `checkj` 直到他的條件返回 false 為止。當返回 false 時,`checkiandj` 語句完成了餘數的計算,且 `checkiandj` 會反覆執行,直到他的條件返回為 false 為止。當返回 false 時,程式繼續執行 `checkiandj` 後面的語句。
@@ -47,5 +49,3 @@ checkiandj: while (i < 4) {
document.write("j = " + j + ""); } ``` - -{{ PreviousNext("Core_JavaScript_1.5_教學:循環語法:break_語法", "Core_JavaScript_1.5_教學:物件的操作語法") }} diff --git a/files/zh-tw/web/javascript/reference/statements/do...while/index.md b/files/zh-tw/web/javascript/reference/statements/do...while/index.md index 006da95381d8d3..b144874e05b115 100644 --- a/files/zh-tw/web/javascript/reference/statements/do...while/index.md +++ b/files/zh-tw/web/javascript/reference/statements/do...while/index.md @@ -15,7 +15,7 @@ while (condition); `statement` 會在檢測條件之前就先執行一次。若要執行多個語句,就使用區塊語法(`{ ... }`)把語句群組化。如果 `condition` 為 true,就會再執行一次語句。每回執行以後,就會檢測條件。當條件為 false 時,就停止執行並把控制權轉移給 `do...while` 後面的語句。 -**範例** +## 範例 在以下範例中,do 循環至少會反覆執行一次,並一直反覆到 i 不再小於 5 為止。 diff --git a/files/zh-tw/web/javascript/reference/statements/for/index.md b/files/zh-tw/web/javascript/reference/statements/for/index.md index 426bd96d3871e4..379b1daa093077 100644 --- a/files/zh-tw/web/javascript/reference/statements/for/index.md +++ b/files/zh-tw/web/javascript/reference/statements/for/index.md @@ -16,7 +16,7 @@ for ([initialExpression]; [condition]; [incrementExpression]) statement; 3. 執行 `statement`。若要執行多個語句,就使用區塊語法(`{ ... }`)把這些語句群組化。 4. 執行更新表達式 `incrementExpression`,並回到第 2 步驟。 -**範例** +## 範例 以下函數內含 `for` 語法,計數至下拉式選單的已選擇選項的數目為止(Select 物件允許複選)。`for` 語法宣告變數 `i` 並以 0 初始化。他會檢驗 `i` 是否小於 `Select` 物件的選項數目,持續執行 `if` 語句,並在每一次循環之後以 1 遞增 `i`。 |