Skip to content

Commit

Permalink
[zh-CN]: update translation for Broadcast Channel API - part II (#23375)
Browse files Browse the repository at this point in the history
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Jason Ren <[email protected]>
  • Loading branch information
3 people authored Sep 18, 2024
1 parent 0155042 commit 072cee9
Show file tree
Hide file tree
Showing 4 changed files with 86 additions and 63 deletions.
20 changes: 10 additions & 10 deletions files/zh-cn/web/api/broadcastchannel/close/index.md
Original file line number Diff line number Diff line change
@@ -1,27 +1,27 @@
---
title: BroadcastChannel.close()
title: BroadcastChannelclose() 方法
slug: Web/API/BroadcastChannel/close
l10n:
sourceCommit: 50a45d52fd9f45f1ca30b546af5920d0ccda82dc
---

{{APIRef("BroadCastChannel API")}}
{{APIRef("BroadCastChannel API")}} {{AvailableInWorkers}}

通过调用 **`BroadcastChannel.close()`** 方法,可以马上断开其与对应频道的关联,并让其被垃圾回收。这是必要的步骤,因为浏览器没有其他方式知道频道不再被需要。

{{AvailableInWorkers}}
{{domxref("BroadcastChannel")}} 接口的 **`close()`** 方法终止与底层频道的连接,从而允许对对象进行垃圾回收。这是必须执行的步骤,因为浏览器没有其他方法可以知道不再需要此频道。

## 语法

```plain
var str = channel.close();
```js-nolint
close()
```

## 示例

```js
// 连接到指定频道
var bc = new BroadcastChannel("test_channel");
const bc = new BroadcastChannel("test_channel");

// 其他操作 (如:postMessage, …)
// 其他操作如:postMessage、……)

// 当完成后,断开与频道的连接
bc.close();
Expand All @@ -37,4 +37,4 @@ bc.close();

## 参见

- {{domxref("BroadcastChannel")}}, the interface it belongs to.
- 所属接口:{{domxref("BroadcastChannel")}}
26 changes: 14 additions & 12 deletions files/zh-cn/web/api/broadcastchannel/message_event/index.md
Original file line number Diff line number Diff line change
@@ -1,19 +1,21 @@
---
title: BroadcastChannel:message 事件
slug: Web/API/BroadcastChannel/message_event
l10n:
sourceCommit: 50a45d52fd9f45f1ca30b546af5920d0ccda82dc
---

{{APIRef}}
{{APIRef("BroadCastChannel API")}}{{AvailableInWorkers}}

当频道收到一条消息时,会在关联的 {{domxref('BroadcastChannel')}} 对象上触发 `message` 事件
{{domxref("BroadcastChannel")}} 接口的 **`message`** 事件在频道收到一条消息时触发

## 语法

在 {{domxref("EventTarget.addEventListener", "addEventListener()")}} 等方法中使用事件名称,或设置事件处理器属性。

```js
addEventListener("message", (event) => {});
onmessage = (event) => {};
```js-nolint
addEventListener("message", (event) => { })
onmessage = (event) => { }
```

## 事件类型
Expand All @@ -26,20 +28,20 @@ onmessage = (event) => {};

_除了下面列出的属性之外,还可以使用父接口 {{domxref("Event")}} 的属性。_

- {{domxref("MessageEvent.data", "data")}} {{readonlyInline}}
- {{domxref("MessageEvent.data", "data")}} {{ReadOnlyInline}}
- : 由消息发送者发送的数据。
- {{domxref("MessageEvent.origin", "origin")}} {{readonlyInline}}
- {{domxref("MessageEvent.origin", "origin")}} {{ReadOnlyInline}}
- : 一个表示消息发送者来源的字符串。
- {{domxref("MessageEvent.lastEventId", "lastEventId")}} {{readonlyInline}}
- {{domxref("MessageEvent.lastEventId", "lastEventId")}} {{ReadOnlyInline}}
- : 一个表示事件唯一 ID 的字符串。
- {{domxref("MessageEvent.source", "source")}} {{readonlyInline}}
- {{domxref("MessageEvent.source", "source")}} {{ReadOnlyInline}}
- : 一个*消息事件源*,可以是一个用于表示消息发送者的 {{glossary("WindowProxy")}}、{{domxref("MessagePort")}} 或 {{domxref("ServiceWorker")}} 对象。
- {{domxref("MessageEvent.ports", "ports")}} {{readonlyInline}}
- {{domxref("MessageEvent.ports", "ports")}} {{ReadOnlyInline}}
- : 一个与发送消息(通过频道发送消息或向 SharedWorker 发送消息)的频道相关联的 {{domxref("MessagePort")}} 对象的数组。

## 示例

在这个示例中,有一个 [`<iframe>`](/zh-CN/docs/Web/HTML/Element/iframe) 作为发送者,当用户点击按钮之后,会广播 [`<textarea>`](/zh-CN/docs/Web/HTML/Element/textarea) 中的内容。同时,有两个 `iframe` 作为接收者,会监听广播的消息,并将结果写入 [`<div>`](/zh-CN/docs/Web/HTML/Element/div) 元素。
在这个示例中,有一个 {{HTMLElement("iframe")}} 作为发送者,当用户点击按钮之后,会广播 {{HTMLElement("textarea")}} 中的内容。同时,有两个 `iframe` 作为接收者,会监听广播的消息,并将结果写入 {{HTMLElement("div")}} 元素。

### 发送者

Expand Down Expand Up @@ -168,4 +170,4 @@ channel.addEventListener("message", (event) => {

## 参见

- 相关事件:[`messageerror`](/zh-CN/docs/Web/API/BroadcastChannel/messageerror_event)
- 相关事件:{{domxref("BroadcastChannel/messageerror_event", "messageerror")}}
73 changes: 39 additions & 34 deletions files/zh-cn/web/api/broadcastchannel/messageerror_event/index.md
Original file line number Diff line number Diff line change
@@ -1,42 +1,47 @@
---
title: "BroadcastChannel: messageerror event"
title: BroadcastChannelmessageerror 事件
slug: Web/API/BroadcastChannel/messageerror_event
l10n:
sourceCommit: 50a45d52fd9f45f1ca30b546af5920d0ccda82dc
---

{{APIRef}}

当频道收到一条无法反序列化的消息时会在 {{domxref('BroadcastChannel')}} 对象上触发 `messageerror` 事件。

<table class="properties">
<tbody>
<tr>
<th scope="row">Bubbles</th>
<td>No</td>
</tr>
<tr>
<th scope="row">Cancelable</th>
<td>No</td>
</tr>
<tr>
<th scope="row">Interface</th>
<td>{{domxref("MessageEvent")}}</td>
</tr>
<tr>
<th scope="row">Event handler property</th>
<td>
<code
><a href="/zh-CN/docs/Web/API/BroadcastChannel/onmessageerror"
>onmessageerror</a
></code
>
</td>
</tr>
</tbody>
</table>
{{APIRef("BroadCastChannel API")}}{{AvailableInWorkers}}

{{domxref("BroadcastChannel")}} 接口的 **`messageerror`** 事件在无法反序列化的消息到达频道时触发。

## 语法

在 {{domxref("EventTarget.addEventListener", "addEventListener()")}} 等方法中使用事件名称,或设置事件处理器属性。

```js-nolint
addEventListener("messageerror", (event) => { })
onmessageerror = (event) => { }
```

## 事件类型

一个 {{domxref("MessageEvent")}}。继承自 {{domxref("Event")}}。

{{InheritanceDiagram("MessageEvent")}}

## 事件属性

_除了下面列出的属性之外,还可以使用父接口 {{domxref("Event")}} 的属性。_

- {{domxref("MessageEvent.data", "data")}} {{ReadOnlyInline}}
- : 由消息发送者发送的数据。
- {{domxref("MessageEvent.origin", "origin")}} {{ReadOnlyInline}}
- : 一个表示消息发送者来源的字符串。
- {{domxref("MessageEvent.lastEventId", "lastEventId")}} {{ReadOnlyInline}}
- : 一个表示事件唯一 ID 的字符串。
- {{domxref("MessageEvent.source", "source")}} {{ReadOnlyInline}}
- : 一个*消息事件源*,可以是一个用于表示消息发送者的 {{glossary("WindowProxy")}}、{{domxref("MessagePort")}} 或 {{domxref("ServiceWorker")}} 对象。
- {{domxref("MessageEvent.ports", "ports")}} {{ReadOnlyInline}}
- : 一个与发送消息(通过频道发送消息或向 SharedWorker 发送消息)的频道相关联的 {{domxref("MessagePort")}} 对象的数组。

## 示例

以下代码使用 [`addEventListener`](/zh-CN/docs/Web/API/EventTarget/addEventListener) 来监听消息和错误:
此代码使用 {{domxref("EventTarget.addEventListener", "addEventListener()")}} 来监听消息和错误:

```js
const channel = new BroadcastChannel("example-channel");
Expand All @@ -50,7 +55,7 @@ channel.addEventListener("messageerror", (event) => {
});
```

使用 [`onmessage`](/zh-CN/docs/Web/API/BroadcastChannel/onmessage)[`onmessageerror`](/zh-CN/docs/Web/API/BroadcastChannel/onmessageerror) 事件处理程序来实现相同效果
下述代码也实现了相同需求,但使用 `onmessage``onmessageerror` 事件处理器属性

```js
const channel = new BroadcastChannel("example-channel");
Expand All @@ -74,4 +79,4 @@ channel.onmessageerror = (event) => {

## 参见

- 相关事件:[`message`](/zh-CN/docs/Web/API/BroadcastChannel/message_event)
- 相关事件:{{domxref("BroadcastChannel/message_event", "message")}}。
30 changes: 23 additions & 7 deletions files/zh-cn/web/api/broadcastchannel/postmessage/index.md
Original file line number Diff line number Diff line change
@@ -1,20 +1,36 @@
---
title: BroadcastChannel.postMessage()
title: BroadcastChannelpostMessage() 方法
slug: Web/API/BroadcastChannel/postMessage
l10n:
sourceCommit: 50a45d52fd9f45f1ca30b546af5920d0ccda82dc
---

{{APIRef("BroadCastChannel API")}}
{{APIRef("BroadCastChannel API")}} {{AvailableInWorkers}}

可以使用 **`BroadcastChannel.postMessage()`** 发送一条任意 {{jsxref("Object")}} 类型的消息,给所有同{{glossary("origin", "源")}}下监听了该频道的所有{{glossary("browsing context", "浏览器上下文")}}。消息以 [`message`](/zh-CN/docs/Web/API/BroadcastChannel/message_event) 事件的形式发送给每一个绑定到该频道的广播频道。

{{AvailableInWorkers}}
{{domxref("BroadcastChannel")}} 接口的 **`postMessage()`** 方法向任何{{glossary("browsing context", "浏览上下文")}}中具有相同的{{glossary("origin", "源")}}的每个侦听器发送一条消息,该消息可以是任何类型的 {{jsxref("Object")}}。该消息以 {{domxref("BroadcastChannel/message_event", "message")}} 事件的形式传输,该事件针对绑定到频道的每个 {{domxref("BroadcastChannel")}}。

## 语法

```plain
var str = channel.postMessage(object);
```js-nolint
postMessage(message)
```

### 参数

- `message`
- : 要发送到其他窗口的数据。数据使用[结构化克隆算法](/zh-CN/docs/Web/API/Web_Workers_API/Structured_clone_algorithm)进行序列化。这意味着你可以将各种数据对象安全地传递到目标窗口,而无需自己对其进行序列化。

### 返回值

无。

### 异常

- `InvalidStateError` {{domxref("DOMException")}}
- : 如果 {{domxref("BroadcastChannel")}} 已关闭,则抛出此异常。
- `DataCloneError` {{domxref("DOMException")}}
- : 如果输入数据的任何部分不可序列化,则抛出此异常。

## 规范

{{Specifications}}
Expand Down

0 comments on commit 072cee9

Please sign in to comment.