Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[pull] main from mdn:main #11

Merged
merged 3 commits into from
Nov 29, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions files/zh-cn/_redirects.txt
Original file line number Diff line number Diff line change
Expand Up @@ -1884,6 +1884,7 @@
/zh-CN/docs/Web/API/Window/openDialog /zh-CN/docs/Web/API/Window
/zh-CN/docs/Web/API/Window/pageXOffset /zh-CN/docs/Web/API/Window/scrollX
/zh-CN/docs/Web/API/Window/pageYOffset /zh-CN/docs/Web/API/Window/scrollY
/zh-CN/docs/Web/API/Window/updateCommands /zh-CN/docs/Web/API/Window
/zh-CN/docs/Web/API/WindowBase64/Base64_encoding_and_decoding /zh-CN/docs/Glossary/Base64
/zh-CN/docs/Web/API/WindowBase64/atob /zh-CN/docs/Web/API/Window/atob
/zh-CN/docs/Web/API/WindowBase64/btoa /zh-CN/docs/Web/API/Window/btoa
Expand Down
4 changes: 0 additions & 4 deletions files/zh-cn/_wikihistory.json
Original file line number Diff line number Diff line change
Expand Up @@ -15846,10 +15846,6 @@
"jtyjty99999"
]
},
"Web/API/Window/updateCommands": {
"modified": "2020-10-15T22:09:40.955Z",
"contributors": ["usernameisMan"]
},
"Web/API/Window/visualViewport": {
"modified": "2019-03-18T21:36:53.168Z",
"contributors": ["eiddie"]
Expand Down
2 changes: 1 addition & 1 deletion files/zh-cn/web/api/fenced_frame_api/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ Web 上[隐私](/zh-CN/docs/Web/Privacy)和[安全](/zh-CN/docs/Web/Security)问

如上所述,你不能通过常规脚本直接控制嵌入在 {{htmlelement("fencedframe")}} 中的内容。

要设置将在 `<fencedframe>` 中显示的内容,使用 API(如[受保护的受众](https://developers.google.com/privacy-sandbox/private-advertising/protected-audience)或[共享存储](https://developers.google.com/privacy-sandbox/private-advertising/shared-storage))生成一个 {{domxref("FencedFrameConfig")}} 对象,然后通过 Javascript 将该对象设置为 `<fencedframe>` 的 {{domxref("HTMLFencedFrameElement.config")}} 属性
要设置将在 `<fencedframe>` 中显示的内容,使用 API(如[受保护的受众](https://developers.google.com/privacy-sandbox/private-advertising/protected-audience)或[共享存储](https://developers.google.com/privacy-sandbox/private-advertising/shared-storage))生成一个 {{domxref("FencedFrameConfig")}} 对象,然后通过 Javascript 将该对象设置为 `<fencedframe>` 的 {{domxref("HTMLFencedFrameElement.config")}} 属性

以下示例从受保护的受众 API 的广告拍卖中获取一个 `FencedFrameConfig`,然后使用它在 `<fencedframe>` 中显示获胜的广告:

Expand Down
113 changes: 113 additions & 0 deletions files/zh-cn/web/api/fencedframeconfig/index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,113 @@
---
title: FencedFrameConfig
slug: Web/API/FencedFrameConfig
l10n:
sourceCommit: f430d277573ba0b06b1ac33ae8017fd90f170bef
---

{{SeeCompatTable}}{{APIRef("Fenced Frame API")}}

**`FencedFrameConfig`** 接口表示 {{htmlelement("fencedframe")}} 的导航,即其中将显示什么内容。

`FencedFrameConfig` 对象无法通过 JavaScript 手动构造。它们由诸如[受保护的受众 API](https://developers.google.cn/privacy-sandbox/private-advertising/protected-audience) 之类的来源返回,并被设置为 {{domxref("HTMLFencedFrameElement.config")}} 的值。

`FencedFrameConfig` 对象实例具有一个公开的方法,但它也映射到包含无法从 JavaScript 访问的不透明属性的内部配置信息。这包括诸如加载内容的来源和用于广告目的的兴趣组等信息。这是围栏框架如何在尊重用户隐私的同时实现关键用例的关键所在。

{{InheritanceDiagram}}

## 实例方法

- {{domxref("FencedFrameConfig.setSharedStorageContext", "setSharedStorageContext()")}} {{experimental_inline}}
- : 将嵌入文档中的数据传递到 `<fencedframe>` 的共享存储中。

## 示例

### 基本用法

要设置将在 `<fencedframe>` 中显示的内容,使用 API(如[受保护的受众](https://developers.google.cn/privacy-sandbox/private-advertising/protected-audience)或[共享存储](https://developers.google.cn/privacy-sandbox/private-advertising/shared-storage))生成一个 `FencedFrameConfig` 对象,然后设置为 `<fencedframe>` 的 `config` 属性值。

以下示例从受保护的受众 API 的广告竞价中获取 `FencedFrameConfig`,然后使用它在 `<fencedframe>` 中显示竞价成功的广告:

```js
const frameConfig = await navigator.runAdAuction({
// 竞价配置
resolveToConfig: true,
});

const frame = document.createElement("fencedframe");
frame.config = frameConfig;
```

> [!NOTE]
> 在调用 `runAdAuction()` 时,必须传入 `resolveToConfig: true` 以获得 `FencedFrameConfig` 对象。如果没有设置,则所得的 {{jsxref("Promise")}} 将兑现为一个只能在 {{htmlelement("iframe")}} 中使用的 URN。

### 通过 `setSharedStorageContext()` 传递上下文数据

你可以使用[隐私聚合 API](https://developers.google.cn/privacy-sandbox/private-advertising/private-aggregation) 来创建报告,该报告将围栏框架内的事件级数据与嵌入文档的上下文数据相结合。`setSharedStorageContext()` 可用于将从嵌入方传递的上下文数据传递给由[受保护的受众 API](https://developers.google.cn/privacy-sandbox/private-advertising/protected-audience) 启动的共享存储 worklet。

在下面的示例中,我们将嵌入页面和围栏框架中的数据都存储在[共享存储](https://developers.google.cn/privacy-sandbox/private-advertising/shared-storage)中。

在嵌入页面中,我们将使用 `setSharedStorageContext()` 设置一个模拟事件 ID 作为共享存储上下文:

```js
const frameConfig = await navigator.runAdAuction({ resolveToConfig: true });

// 你想要从嵌入方传递给共享存储 worklet 的数据
frameConfig.setSharedStorageContext("some-event-id");

const frame = document.createElement("fencedframe");
frame.config = frameConfig;
```

在围栏框架内,我们使用 {{domxref("Worklet.addModule","window.sharedStorage.worklet.addModule()")}} 添加 worklet 模块,然后使用 {{domxref("WindowSharedStorage.run","window.sharedStorage.run()")}} 将事件级数据发送到共享存储 worklet 中(这与来自嵌入文档的上下文数据无关):

```js
const frameData = {
// 数据仅在围栏框架内可用
};

await window.sharedStorage.worklet.addModule("reporting-worklet.js");

await window.sharedStorage.run("send-report", {
data: {
frameData,
},
});
```

在 `reporting-worklet.js` worklet 中,我们从 `sharedStorage.context` 中读取嵌入文档的事件 ID,并从数据对象中读取框架的事件级数据,然后通过[隐私聚合](https://developers.google.cn/privacy-sandbox/private-advertising/private-aggregation)进行报告:

```js
class ReportingOperation {
convertEventIdToBucket(eventId) { ... }
convertEventPayloadToValue(info) { ... }

async run(data) {
// 来自于嵌入方的数据
const eventId = sharedStorage.context;

// 来自于围栏框架的数据
const eventPayload = data.frameData;

privateAggregation.sendHistogramReport({
bucket: convertEventIdToBucket(eventId),
value: convertEventPayloadToValue(eventPayload)
});
}
}

register('send-report', ReportingOperation);
```

## 规范

{{Specifications}}

## 浏览器兼容性

{{Compat}}

## 参见

- developers.google.cn 上的[围栏框架](https://developers.google.cn/privacy-sandbox/private-advertising/fenced-frame)
- developers.google.cn 上的[隐私沙盒](https://developers.google.cn/privacy-sandbox)
Original file line number Diff line number Diff line change
@@ -0,0 +1,98 @@
---
title: FencedFrameConfig:setSharedStorageContext() 方法
slug: Web/API/FencedFrameConfig/setSharedStorageContext
l10n:
sourceCommit: 801556b40e45c735bf7f74e6db7d10864173e44a
---

{{APIRef("Fenced Frame API")}}{{SeeCompatTable}}

{{domxref("FencedFrameConfig")}} 接口的 **`setSharedStorageContext()`** 方法用于将嵌入文档中的上下文数据传递到 `<fencedframe>` [共享存储](https://developers.google.cn/privacy-sandbox/private-advertising/shared-storage)中。

## 语法

```js-nolint
setSharedStorageContext(context)
```

### 参数

- `context`
- : 一个表示要传递到共享存储中的上下文数据的字符串。一旦设置,它将被存储在 {{domxref("FencedFrameConfig")}} 实例的内部配置中。

### 返回值

无(`undefined`)。

## 示例

### 通过 `setSharedStorageContext()` 传递上下文数据

你可以使用[隐私聚合 API](https://developers.google.cn/privacy-sandbox/private-advertising/private-aggregation) 来创建报告,该报告将围栏框架内的事件级数据与嵌入文档的上下文数据相结合。`setSharedStorageContext()` 可用于将从嵌入方传递的上下文数据传递给由[受保护的受众 API](https://developers.google.cn/privacy-sandbox/private-advertising/protected-audience) 启动的共享存储 worklet。

在下面的示例中,我们将嵌入页面和围栏框架中的数据都存储在[共享存储](https://developers.google.cn/privacy-sandbox/private-advertising/shared-storage)中。

在嵌入页面中,我们将使用 `setSharedStorageContext()` 设置一个模拟事件 ID 作为共享存储上下文:

```js
const frameConfig = await navigator.runAdAuction({ resolveToConfig: true });

// 你想要从嵌入方传递给共享存储 worklet 的数据
frameConfig.setSharedStorageContext("some-event-id");

const frame = document.createElement("fencedframe");
frame.config = frameConfig;
```

在围栏框架内,我们使用 {{domxref("Worklet.addModule","window.sharedStorage.worklet.addModule()")}} 添加 worklet 模块,然后使用 {{domxref("WindowSharedStorage.run","window.sharedStorage.run()")}} 将事件级数据发送到共享存储 worklet 中(这与来自嵌入文档的上下文数据无关):

```js
const frameData = {
// 数据仅在围栏框架内可用
};

await window.sharedStorage.worklet.addModule("reporting-worklet.js");

await window.sharedStorage.run("send-report", {
data: {
frameData,
},
});
```

在 `reporting-worklet.js` worklet 中,我们从 `sharedStorage.context` 中读取嵌入文档的事件 ID,并从数据对象中读取框架的事件级数据,然后通过隐私聚合(Private Aggregation)进行报告:

```js
class ReportingOperation {
convertEventIdToBucket(eventId) { ... }
convertEventPayloadToValue(info) { ... }

async run(data) {
// 来自于嵌入方的数据
const eventId = sharedStorage.context;

// 来自于围栏框架的数据
const eventPayload = data.frameData;

privateAggregation.sendHistogramReport({
bucket: convertEventIdToBucket(eventId),
value: convertEventPayloadToValue(eventPayload)
});
}
}

register('send-report', ReportingOperation);
```

## 规范

{{Specifications}}

## 浏览器兼容性

{{Compat}}

## 参见

- developers.google.cn 上的[围栏框架](https://developers.google.cn/privacy-sandbox/private-advertising/fenced-frame)
- developers.google.cn 上的[隐私沙盒](https://developers.google.cn/privacy-sandbox)
38 changes: 16 additions & 22 deletions files/zh-cn/web/api/websocket/readystate/index.md
Original file line number Diff line number Diff line change
@@ -1,37 +1,31 @@
---
title: WebSocket.readyState
title: WebSocketreadyState 属性
slug: Web/API/WebSocket/readyState
l10n:
sourceCommit: fb311d7305937497570966f015d8cc0eb1a0c29c
---

{{APIRef("Web Sockets API")}}
{{APIRef("WebSockets API")}}{{AvailableInWorkers}}

## 概要

返回当前 {{domxref("WebSocket")}} 的链接状态,只读。

## 语法

```plain
var readyState = WebSocket.readyState;
```
**`WebSocket.readyState`** 只读属性返回 {{domxref("WebSocket")}} 连接的当前状态。

## 值

以下其中之一
一个数字,是 {{domxref("WebSocket")}} 接口定义的四个可能状态常量之一:

- 0 (`WebSocket.CONNECTING`)
- : 正在链接中
- 1 (`WebSocket.OPEN`)
- : 已经链接并且可以通讯
- 2 (`WebSocket.CLOSING`)
- : 连接正在关闭
- 3 (`WebSocket.CLOSED`)
- : 连接已关闭或者没有链接成功
- `WebSocket.CONNECTING`(0)
- : 套接字已创建,但连接尚未打开。
- `WebSocket.OPEN`(1)
- : 连接已打开,准备进行通信。
- `WebSocket.CLOSING`(2)
- : 连接正在关闭中。
- `WebSocket.CLOSED`(3)
- : 连接已关闭或无法打开。

## Specifications
## 规范

{{Specifications}}

## Browser compatibility
## 浏览器兼容性

{{Compat}}
34 changes: 16 additions & 18 deletions files/zh-cn/web/api/window/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -151,22 +151,18 @@ _本接口从 {{domxref("EventTarget")}} 接口继承属性。_

_本接口从 {{domxref("EventTarget")}} 接口继承方法。_

- {{domxref("EventTarget.addEventListener", "Window.addEventListener()")}}
- : 为 window 上的特定事件类型注册一个事件处理器。
- {{domxref("Window.atob()")}}
- : 解码一个使用 base-64 编码的数据字符串。
- {{domxref("Window.alert()")}}
- : 显示一个警告对话框。
- {{domxref("Window.blur()")}}
- {{domxref("Window.blur()")}} {{deprecated_inline}}
- : 将焦点从窗口上移开。
- {{domxref("btoa", "Window.btoa()")}}
- {{domxref("Window.btoa()")}}
- : 从一串二进制数据中创建一个 base-64 编码的 ASCII 字符串。
- {{domxref("Window.cancelAnimationFrame()")}}
- : 取消之前使用 {{domxref("Window.requestAnimationFrame")}} 安排的回调。
- {{domxref("Window.cancelIdleCallback()")}}
- : 取消之前使用 {{domxref("Window.requestIdleCallback")}} 安排的回调。
- {{domxref("Window.clearImmediate()")}}
- : 取消使用 `setImmediate()` 设置的重复执行任务。
- {{domxref("Window.clearInterval()")}}
- : 取消使用 {{domxref("Window.setInterval()")}} 设置的重复执行任务。
- {{domxref("Window.clearTimeout()")}}
Expand All @@ -177,8 +173,6 @@ _本接口从 {{domxref("EventTarget")}} 接口继承方法。_
- : 显示一个带有用户需要回应的信息对话框。
- {{domxref("Window.createImageBitmap()")}}
- : 接受各种不同的图像源,并返回一个 {{jsxref("Promise")}},经兑现可得到 {{domxref("ImageBitmap")}}。可以选择将图片源裁剪成以 _(sx, sy)_ 为起点的像素矩形,宽度为 sw,高度为 sh。
- {{domxref("EventTarget.dispatchEvent", "Window.dispatchEvent()")}}
- : 用于触发事件。
- {{domxref("Window.dump()")}} {{Non-standard_Inline}}
- : 向控制台中写一条消息。
- {{domxref("Window.fetch()")}}
Expand Down Expand Up @@ -207,10 +201,8 @@ _本接口从 {{domxref("EventTarget")}} 接口继承方法。_
- : 打开“打印”对话框,打印当前文档。
- {{domxref("Window.prompt()")}}
- : 返回用户在提示对话框中输入的文本。
- {{DOMxRef("Window.queryLocalFonts()")}} {{Experimental_Inline}}
- {{DOMxRef("Window.queryLocalFonts()")}} {{Experimental_Inline}} {{SecureContext_Inline}}
- : 返回 {{jsxref("Promise")}},经兑现可得到包含一个代表本地可用字体的 {{domxref("FontData")}} 对象数组。
- {{domxref("EventTarget.removeEventListener", "Window.removeEventListener()")}}
- : 从 window 上移除一个事件监听器。
- {{domxref("reportError", "Window.reportError()")}}
- : 报告一个脚本中的错误,模拟一个未处理的异常。
- {{domxref("Window.requestAnimationFrame()")}}
Expand All @@ -231,12 +223,8 @@ _本接口从 {{domxref("EventTarget")}} 接口继承方法。_
- : 按给定的页数滚动文档。
- {{domxref("Window.scrollTo()")}}
- : 将文档滚动至特定坐标。
- {{domxref("Window.setImmediate()")}}
- : 在浏览器完成其他繁重的任务后执行一个函数。
- {{domxref("Window.setInterval()")}}
- : 安排一个函数,在给定的毫秒数过去后执行。
- {{domxref("Window.setResizable()")}} {{Non-standard_Inline}}
- : 切换用户调整窗口大小的能力。
- {{domxref("Window.setTimeout()")}}
- : 安排函数在给定的时间内执行。
- {{domxref("Window.sizeToContent()")}} {{Non-standard_Inline}}
Expand All @@ -249,21 +237,31 @@ _本接口从 {{domxref("EventTarget")}} 接口继承方法。_
- : 显示一个目录选择器,允许用户选择一个目录。
- {{domxref("Window.stop()")}}
- : 该方法停止了窗口的加载。
- {{domxref("Window.updateCommands()")}} {{Non-standard_Inline}}
- : 更新当前 chrome 窗口(用户界面)的命令状态。

### 已弃用的方法

- {{domxref("Window.back()")}} {{Non-standard_Inline}} {{Deprecated_Inline}}
- : 在窗口历史中后退一步。该方法已被废弃,应该使用 {{domxref("History.back", "history.back()")}} 代替。
- {{domxref("Window.captureEvents()")}} {{Deprecated_Inline}}
- : 注册窗口以捕获所有指定类型的事件。
- {{domxref("Window.clearImmediate()")}} {{Non-standard_Inline}} {{Deprecated_Inline}}
- : 取消使用 `setImmediate()` 设置的重复执行任务。
- {{domxref("Window.forward()")}} {{Non-standard_Inline}} {{Deprecated_Inline}}
- : 在窗口历史中前进一步。该方法已被废弃,应该使用 {{domxref("History.forward", "history.forward()")}} 代替。
- {{domxref("Window.releaseEvents()")}} {{Deprecated_Inline}}
- : 解除窗口对特定类型事件的捕获。
- {{domxref("Window.requestFileSystem()")}} {{Non-standard_Inline}} {{Deprecated_Inline}}
- : 允许网站或应用访问沙盒文件系统以供自己使用。
- {{domxref("Window.setImmediate()")}} {{Non-standard_Inline}} {{Deprecated_Inline}}
- : 在浏览器完成其他繁重的任务后执行一个函数。
- {{domxref("Window.setResizable()")}} {{Non-standard_Inline}} {{deprecated_inline}}
- : 不执行操作(no-op)。保持对 Netscape 4.x 的向后兼容性。
- {{domxref("Window.showModalDialog()")}} {{Non-standard_Inline}} {{Deprecated_Inline}}
- : 显示一个对话框。
- : 显示一个模态对话框。
- {{domxref("Window.webkitConvertPointFromNodeToPage()")}} {{Non-standard_Inline}} {{Deprecated_Inline}}
- : 将 {{domxref("WebKitPoint")}} 从节点坐标系转换到页面坐标系。
- {{domxref("Window.webkitConvertPointFromPageToNode()")}} {{Non-standard_Inline}} {{Deprecated_Inline}}
- : 将 {{domxref("WebKitPoint")}} 从页面坐标系转换到节点坐标系。

## 事件

Expand Down
Loading