Skip to content

Commit

Permalink
Merge branch 'main' into google-cn-mirror
Browse files Browse the repository at this point in the history
  • Loading branch information
yin1999 authored Nov 29, 2024
2 parents 9775bcd + 5411999 commit 4d23a8b
Show file tree
Hide file tree
Showing 8 changed files with 245 additions and 77 deletions.
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.cn/privacy-sandbox/private-advertising/protected-audience)[共享存储](https://developers.google.cn/privacy-sandbox/private-advertising/shared-storage))生成一个 {{domxref("FencedFrameConfig")}} 对象,然后通过 Javascript 将该对象设置为 `<fencedframe>` 的 {{domxref("HTMLFencedFrameElement.config")}} 属性
要设置将在 `<fencedframe>` 中显示的内容,使用 API(如[受保护的受众](https://developers.google.cn/privacy-sandbox/private-advertising/protected-audience)[共享存储](https://developers.google.cn/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

0 comments on commit 4d23a8b

Please sign in to comment.