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

[zh-cn]: sync translation for Permissions API #23487

Merged
merged 8 commits into from
Sep 30, 2024
Merged
Show file tree
Hide file tree
Changes from 1 commit
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
6 changes: 1 addition & 5 deletions files/zh-cn/web/api/permissions/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
title: Permissions
slug: Web/API/Permissions
l10n:
sourceCommit: ee253ac58d71b2ed336b705ab97dbe93122b3e04
sourceCommit: 805d398f95c9d1ad8769e65d56bbfe2a31205021
---

{{APIRef("Permissions API")}}{{AvailableInWorkers}}
Expand All @@ -13,10 +13,6 @@ l10n:

- {{domxref("Permissions.query","Permissions.query()")}}
- : 返回给定 API 的用户权限状态。
- {{domxref("Permissions.request","Permissions.request()")}} {{Experimental_Inline}}
- : 请求使用给定 API 的权限。目前任何浏览器都不支持此功能。
- {{domxref("Permissions.requestAll","Permissions.requestAll()")}} {{Experimental_Inline}} {{Non-standard_Inline}}
- : 请求使用一组给定 API 的权限。目前任何浏览器都不支持此功能。
- {{domxref("Permissions.revoke","Permissions.revoke()")}} {{Deprecated_Inline}}
- : 撤消当前在给定 API 上设置的权限。

Expand Down
2 changes: 1 addition & 1 deletion files/zh-cn/web/api/permissions/query/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
title: Permissions:query() 方法
slug: Web/API/Permissions/query
l10n:
sourceCommit: ee253ac58d71b2ed336b705ab97dbe93122b3e04
sourceCommit: aa8fa82a902746b0bd97839180fc2b5397088140
---

{{APIRef("Permissions API")}}{{AvailableInWorkers}}
Expand Down
6 changes: 5 additions & 1 deletion files/zh-cn/web/api/permissions/revoke/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,17 @@
title: Permissions:revoke() 方法
slug: Web/API/Permissions/revoke
l10n:
sourceCommit: afdbe078d7c0357430ff360538edafba3af5496d
sourceCommit: aa8fa82a902746b0bd97839180fc2b5397088140
---

{{APIRef("Permissions API")}}{{AvailableInWorkers}}{{deprecated_header}}

{{domxref("Permissions")}} 接口的 **`revoke()`** 方法可将当前设置的权限还原为默认状态,即通常的 `prompt` 状态。该方法在全局 {{domxref("Permissions")}} 对象 {{domxref("navigator.permissions")}} 上调用。

This method is removed from the main permissions API specification because its use case is unclear. Permissions are managed by the browser and the current permission model does not involve the site developer being able to imperatively request or revoke permissions. Browsers have shipped this API behind preferences but it's unlikely to reach the standards track. For more context, see the [original discussion to remove `permissions.revoke()`](https://github.com/w3c/permissions/issues/46).

此方法已从主 Permissions API 规范中删除,因为其用例不明确。权限由浏览器管理,当前权限模型不涉及网站开发人员能够强制请求或撤销权限。浏览器已将此 A​​PI 放在首选项后面,但它不太可能达到标准轨道。有关更多上下文,请参阅[关于删除 `permissions.revoke()` 的原始讨论](https://github.com/w3c/permissions/issues/46)。
skyclouds2001 marked this conversation as resolved.
Show resolved Hide resolved

## 语法

```js-nolint
Expand Down
3 changes: 2 additions & 1 deletion files/zh-cn/web/api/permissions_api/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
title: 权限 API
slug: Web/API/Permissions_API
l10n:
sourceCommit: ee253ac58d71b2ed336b705ab97dbe93122b3e04
sourceCommit: a251e34887530216e319fee73b5b859c8c943a53
---

{{DefaultAPISidebar("Permissions API")}}{{AvailableInWorkers}}
Expand All @@ -24,6 +24,7 @@ l10n:
并非所有 API 的权限状态都可以通过权限 API 查询。权限相关的 API 的非详尽列表包括:

- [Background Synchronization API](/zh-CN/docs/Web/API/Background_Synchronization_API):`background-sync`(应当总是被授予)
- [Compute Pressure API](/zh-CN/docs/Web/API/Compute_Pressure_API):`compute-pressure`
- [Geolocation API](/zh-CN/docs/Web/API/Geolocation_API):`geolocation`
- [Local Font Access API](/zh-CN/docs/Web/API/Local_Font_Access_API):`local-fonts`
- [Media Capture and Streams API](/zh-CN/docs/Web/API/Media_Capture_and_Streams_API):`microphone`、`camera`
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
title: 使用 Permissions API
slug: Web/API/Permissions_API/Using_the_Permissions_API
l10n:
sourceCommit: 3dbfd299e6f34873d6355bae4b12b5c1c69242f1
sourceCommit: 805d398f95c9d1ad8769e65d56bbfe2a31205021
skyclouds2001 marked this conversation as resolved.
Show resolved Hide resolved
---

{{DefaultAPISidebar("Permissions API")}}
Expand All @@ -17,9 +17,7 @@ l10n:

[Permissions API](/zh-CN/docs/Web/API/Permissions_API) 提供了一系列工具来让开发者在权限方面实现更好的用户体验。具体来说,开发人员可以使用 {{domxref("Permissions.query()")}} 来检查在当前上下文中使用特定 API 的权限是已授予、已拒绝还是需要通过提示获得特定用户权限。在主线程中查询权限是被[广泛支持](/zh-CN/docs/Web/API/Permissions_API#api.navigator.permissions)的,在 [Worker](/zh-CN/docs/Web/API/Permissions_API#api.workernavigator.permissions) 中也是如此(但有一个明显的例外)。

许多 API 现在都能进行权限查询,例如 [Clipboard API](/zh-CN/docs/Web/API/Clipboard_API)、[Notifications API](/zh-CN/docs/Web/API/Notifications_API)

- [Push API](/zh-CN/docs/Web/API/Push_API)、[Web MIDI API](/zh-CN/docs/Web/API/Web_MIDI_API)。[API 概览](/zh-CN/docs/Web/API/Permissions_API#permission-aware_apis)中提供了许多启用权限的 API 的列表,你可以在[此处的兼容性表](/zh-CN/docs/Web/API/Permissions_API#api.permissions)中了解浏览器的支持情况。
许多 API 现已启用权限查询,例如 [Clipboard API](/zh-CN/docs/Web/API/Clipboard_API)、[Notifications API](/zh-CN/docs/Web/API/Notifications_API)、[Push API](/zh-CN/docs/Web/API/Push_API) 和 [Web MIDI API](/zh-CN/docs/Web/API/Web_MIDI_API)。[API 概览](/zh-CN/docs/Web/API/Permissions_API#permission-aware_apis)中提供了许多权限启用的 API 列表,您可以在[此处的兼容性表](/zh-CN/docs/Web/API/Permissions_API#api.permissions)中了解浏览器支持情况。
skyclouds2001 marked this conversation as resolved.
Show resolved Hide resolved
skyclouds2001 marked this conversation as resolved.
Show resolved Hide resolved

{{domxref("Permissions")}} 还有其他方法可用于专门请求使用 API 的权限和撤销权限,但这些方法已被弃用(非标准及不被广泛支持)。
skyclouds2001 marked this conversation as resolved.
Show resolved Hide resolved

Expand All @@ -33,18 +31,18 @@ l10n:

### 访问 Permissions API

浏览器现已包含 {{domxref("Navigator.permissions")}} 属性使开发者可以访问全局的 {{domxref("Permissions")}} 对象。这个对象最终将包含用来查询、申请和重置权限的方法,尽管,目前只有 {{domxref("Permissions.query()")}}; 我们接下来会讨论它。
浏览器现已包含 {{domxref("Navigator.permissions")}} 属性使开发者可以访问全局的 {{domxref("Permissions")}} 对象。这个对象最终将包含用来查询、申请和重置权限的方法,尽管,目前只有 {{domxref("Permissions.query()")}}我们接下来会讨论它。
skyclouds2001 marked this conversation as resolved.
Show resolved Hide resolved

### 查询权限状态

在我们的例子中,权限功能使用一个函数来处理— `handlePermission()`. 它开始于使用 {{domxref("Permissions.query()")}} 查询权限状态。根据 Promise resolve 后返回的 {{domxref("PermissionStatus")}} 对象的 {{domxref("PermissionStatus.state", "state")}} 属性,做出不同的处理:
在我们的例子中,权限功能使用一个函数来处理—`handlePermission()`它开始于使用 {{domxref("Permissions.query()")}} 查询权限状态。根据 Promise 兑现后返回的 {{domxref("PermissionStatus")}} 对象的 {{domxref("PermissionStatus.state", "state")}} 属性,做出不同的处理:

- `"granted"`
- : "Enable Geolocation" 按钮被隐藏掉了,因为 Geolocation 已经被允许了,不需要这个按钮了。
- : Enable Geolocation按钮被隐藏掉了,因为 Geolocation 已经被允许了,不需要这个按钮了。
- `"prompt"`
- : 隐藏 "Enable Geolocation" 按钮,因为用户会被(浏览器)引导授权 Geolocation 权限,所以它不需要了。接下来 {{domxref("Geolocation.getCurrentPosition()")}} 函数会运行,它会引导用户授权;如果用户授权了,它会继续执行 `revealPosition()` 函数(会显示地图);如果用户拒绝了, `positionDenied()` 函数会被执行(这会让 "Enable Geolocation" 按钮显示出来)。
- : 隐藏Enable Geolocation按钮,因为用户会被(浏览器)引导授权 Geolocation 权限,所以它不需要了。接下来 {{domxref("Geolocation.getCurrentPosition()")}} 函数会运行,它会引导用户授权;如果用户授权了,它会继续执行 `revealPosition()` 函数(会显示地图);如果用户拒绝了, `positionDenied()` 函数会被执行(这会让Enable Geolocation按钮显示出来)。
- `"denied"`
- : "Enable Geolocation" 按钮会被显示(这段代码也需要放在这里,以防在页面首次加载时,这个源的权限状态就已经被设置为拒绝了)。
- : Enable Geolocation按钮会被显示(这段代码也需要放在这里,以防在页面首次加载时,这个源的权限状态就已经被设置为拒绝了)。
skyclouds2001 marked this conversation as resolved.
Show resolved Hide resolved

```js
function handlePermission() {
Expand Down Expand Up @@ -79,32 +77,7 @@ handlePermission();

### 权限描述符

{{domxref("Permissions.query()")}} 方法接受一个 `PermissionDescriptor` 字典作为参数 — 它包含你感兴趣的 API 的名称。一些 API 有继承自默认的 `PermissionDescriptor` 的更加复杂的 `PermissionDescriptor`s 以包含更多额外的信息。例如,`PushPermissionDescriptor` 也包含一个比尔值指定 [`userVisibleOnly`](/zh-CN/docs/Web/API/PushManager/subscribe#Parameters) 是 `true` 还是 `false`.

### 重置权限

从 Firefox 47 开始,你可以使用 {{domxref("Permissions.revoke()")}} 方法重置现有权限。它的调用方式和 {{domxref("Permissions.query()")}} 方法几乎一模一样,区别是,当 promise 成功 resolve 时,它会让一个现有的权限恢复默认状态(通常是 `prompt`)。让我们看看 demo 中的代码:

```js
const revokeBtn = document.querySelector(".revoke");

// ...

revokeBtn.onclick = () => {
revokePermission();
};

// ...

function revokePermission() {
navigator.permissions.revoke({ name: "geolocation" }).then((result) => {
report(result.state);
});
}
```

> [!NOTE]
> 自 Firefox 51 开始 `revoke()` 函数被默认关闭了,因为它的设计带来了 [Web Applications Security Working Group](https://www.w3.org/2011/webappsec/) 中提到的问题。可以通过将设置项 `dom.permissions.revoke.enable` 置为 `true` 来重新开启它。
{{domxref("Permissions.query()")}} 方法接受一个 `PermissionDescriptor` 字典作为参数——它包含你感兴趣的 API 的名称。一些 API 有继承自默认的 `PermissionDescriptor` 的更加复杂的 `PermissionDescriptor` 以包含更多额外的信息。例如,`PushPermissionDescriptor` 也包含一个布尔值指定 [`userVisibleOnly`](/zh-CN/docs/Web/API/PushManager/subscribe#Parameters) 是 `true` 还是 `false`。
skyclouds2001 marked this conversation as resolved.
Show resolved Hide resolved

### 响应权限状态变化

Expand All @@ -115,6 +88,8 @@ function revokePermission() {
目前,较之我们已有的,这个 API 并没有提供太多额外内容。如果在浏览器询问时,我们选择了从不分享我们的位置,那么不使用浏览器菜单选项的话,我们将无法返回权限的初始状态(询问):

- **Firefox**:_工具 > 页面信息 > 权限 > 访问你的位置_。选择“总是询问”。
- **Chrome**:_汉堡菜单 > 设置 > 显示高级设置。在隐私部分,点击“内容设置”。在出现的对话框中,找到“位置”部分,选择“当网站试图访问时询问”...最后,点击“管理特例”_,移除你对特定网站的授权。
- **Chrome**:_汉堡菜单 > 设置 > 显示高级设置。在隐私部分,点击“内容设置”。在出现的对话框中,找到“位置”部分,选择“当网站试图访问时询问”……最后,点击“管理特例”_,移除你对特定网站的授权。

但是,未来浏览器会提供 `request()` 方法,他让我们可以在任何时候以编程的方式来请求权限。这非常值得期待尽快被实现。

有提案建议为网站添加强制[请求](https://github.com/WICG/permissions-request)和[撤销](https://github.com/WICG/permissions-revoke)权限的功能,但由于用例不明确且遭到浏览器供应商的反对,因此进展不大。请参阅从主规范中[删除 `permissions.request()`](https://github.com/w3c/permissions/issues/83) 和[删除 `permissions.revoke()`](https://github.com/w3c/permissions/issues/46) 的讨论。
4 changes: 2 additions & 2 deletions files/zh-cn/web/api/workernavigator/permissions/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,10 @@
title: WorkerNavigator:permissions 属性
slug: Web/API/WorkerNavigator/permissions
l10n:
sourceCommit: ee253ac58d71b2ed336b705ab97dbe93122b3e04
sourceCommit: e8fe043f7d2ad7cd9804d1bf96e0310949f1dac7
---

{{APIRef("Permissions API")}}
{{APIRef("Permissions API")}}{{AvailableInWorkers("worker")}}

{{domxref("WorkerNavigator")}} 接口的 **`permissions`** 只读属性返回一个 {{domxref("Permissions")}} 对象,可以用于查询或更新 [Permissions API](/zh-CN/docs/Web/API/Permissions_API) 涵盖的 API 权限状态。

Expand Down
Loading