From 099d19797313a8c5c4436d6a06da0bebb5809a77 Mon Sep 17 00:00:00 2001 From: skyclouds2001 <95597335+skyclouds2001@users.noreply.github.com> Date: Sun, 8 Sep 2024 01:01:12 +0800 Subject: [PATCH] Apply suggestions from code review Co-authored-by: A1lo --- .../createsyncaccesshandle/index.md | 13 ++++++------- .../filesystemfilehandle/createwritable/index.md | 9 ++++----- .../web/api/filesystemhandle/issameentry/index.md | 2 +- .../api/filesystemhandle/querypermission/index.md | 4 ++-- .../api/filesystemhandle/requestpermission/index.md | 8 ++++---- 5 files changed, 17 insertions(+), 19 deletions(-) diff --git a/files/zh-cn/web/api/filesystemfilehandle/createsyncaccesshandle/index.md b/files/zh-cn/web/api/filesystemfilehandle/createsyncaccesshandle/index.md index 71c42509ab28f8..edf9856f6d2fd8 100644 --- a/files/zh-cn/web/api/filesystemfilehandle/createsyncaccesshandle/index.md +++ b/files/zh-cn/web/api/filesystemfilehandle/createsyncaccesshandle/index.md @@ -27,7 +27,7 @@ createSyncAccessHandle(options) - `mode` {{optional_inline}} {{non-standard_inline}} - : 指定访问句柄的锁定模式的字符串。默认值为 `"readwrite"`。可能的值包括: - `"read-only"` - - : 可以同时在一个文件上打开多个 `FileSystemSyncAccessHandle` 对象(例如,在多个选项卡中使用同一个应用时),前提是它们都以 `"read-only"` 模式打开。打开后,可以在句柄上调用类似读取的方法——{{domxref("FileSystemSyncAccessHandle.read", "read()")}}、{{domxref("FileSystemSyncAccessHandle.getSize", "getSize()")}} 和 {{domxref("FileSystemSyncAccessHandle.close", "close()")}}。 + - : 可以同时在一个文件上打开多个 `FileSystemSyncAccessHandle` 对象(例如,在多个标签页中使用同一个应用时),前提是它们都以 `"read-only"` 模式打开。打开后,可以在句柄上调用类似读取的方法——{{domxref("FileSystemSyncAccessHandle.read", "read()")}}、{{domxref("FileSystemSyncAccessHandle.getSize", "getSize()")}} 和 {{domxref("FileSystemSyncAccessHandle.close", "close()")}}。 - `"readwrite"` - : 每个文件只能打开一个 `FileSystemSyncAccessHandle` 对象。如果在第一个句柄关闭之前尝试打开后续句柄,则会导致抛出 `NoModificationAllowedError` 异常。打开后,可以调用句柄上的任何可用方法。 - `"readwrite-unsafe"` @@ -74,9 +74,9 @@ onmessage = async (e) => { ### 带有 `mode` 选项的完整示例 -我们的 [`createSyncAccessHandle()` 模式测试](https://createsyncaccesshandle-mode-test.glitch.me/) 示例提供了一个 {{htmlelement("input")}} 字段来输入文本,以及两个按钮——一个用于将输入的文本写入原始私有文件系统中的文件末尾,另一个用于在文件太满时清空文件。 +我们的 [`createSyncAccessHandle()` 模式测试](https://createsyncaccesshandle-mode-test.glitch.me/)示例提供了一个 {{htmlelement("input")}} 字段来输入文本,以及两个按钮——一个用于将输入的文本写入原始私有文件系统中的文件末尾,另一个用于在文件太满时清空文件。 -尝试探索上面的演示,打开浏览器开发者控制台,以便你可以看到正在发生的事情。如果你尝试在多个浏览器选项卡中打开演示,你会发现可以同时打开多个句柄以同时写入文件。这是因为在 `createSyncAccessHandle()` 调用上设置了 `mode: "readwrite-unsafe"`。 +尝试探索上面的演示,打开浏览器开发者控制台,以便你可以看到正在发生的事情。如果你尝试在多个浏览器标签页中打开演示,你会发现可以同时打开多个句柄以同时写入文件。这是因为在 `createSyncAccessHandle()` 调用上设置了 `mode: "readwrite-unsafe"`。 下面我们将探索代码。 @@ -90,10 +90,9 @@ onmessage = async (e) => { -
  • 将你的文本写入文件:
  • +
  • 将你的文本写入文件:
  • - 如果文件太满,则清空该文件: - + 如果文件太满,则清空该文件:
  • ``` @@ -192,7 +191,7 @@ onmessage = function (e) { accessHandle.read(dataView, { at: 0 }); // 将当前文件内容记录到控制台 - console.log("File contents: " + textDecoder.decode(dataView)); + console.log("文件内容:" + textDecoder.decode(dataView)); // 刷新更改 accessHandle.flush(); diff --git a/files/zh-cn/web/api/filesystemfilehandle/createwritable/index.md b/files/zh-cn/web/api/filesystemfilehandle/createwritable/index.md index 3816fe52fad4bc..285f0e6cf46cf1 100644 --- a/files/zh-cn/web/api/filesystemfilehandle/createwritable/index.md +++ b/files/zh-cn/web/api/filesystemfilehandle/createwritable/index.md @@ -31,7 +31,7 @@ createWritable(options) - `"exclusive"` - : 只能打开一个 `FileSystemWritableFileStream` 写入器。在第一个写入器关闭之前尝试打开后续写入器会导致抛出 `NoModificationAllowedError` 异常。 - `"siloed"` - - : 可以同时打开多个 `FileSystemWritableFileStream` 写入器,每个写入器都有自己的交换文件,例如在多个选项卡中使用同一个应用时。最后打开的写入器会写入其数据,因为每个写入器关闭时都会刷新数据。 + - : 可以同时打开多个 `FileSystemWritableFileStream` 写入器,每个写入器都有自己的交换文件,例如在多个标签页中使用同一个应用时。最后打开的写入器会写入其数据,因为每个写入器关闭时都会刷新数据。 ### 返回值 @@ -73,13 +73,13 @@ async function writeFile(fileHandle, contents) { 在上面的演示中,尝试选择文件系统上的文本文件(或输入新文件名),在输入字段中输入一些文本,然后将文本写入文件。打开文件系统上的文件以检查写入是否成功。 -此外,尝试同时在两个浏览器选项卡中打开页面。在第一个标签页中选择要写入的文件,然后立即尝试在第二个标签页中选择要写入的同一文件。你应该会收到一条错误消息,因为我们在 `createWritable()` 调用中设置了 `mode: "exclusive"`。 +此外,尝试同时在两个浏览器标签页中打开页面。在第一个标签页中选择要写入的文件,然后立即尝试在第二个标签页中选择要写入的同一文件。你应该会收到一条错误消息,因为我们在 `createWritable()` 调用中设置了 `mode: "exclusive"`。 下面我们将探索代码。 #### HTML -The two {{htmlelement("button")}} elements and text {{htmlelement("input")}} field look like this: +两个 {{htmlelement("button")}} 元素和文本 {{htmlelement("input")}} 字段如下所示: ```html
      @@ -89,8 +89,7 @@ The two {{htmlelement("button")}} elements and text {{htmlelement("input")}} fie
    1. - 将你的文本写入文件: - + 将你的文本写入文件:
    ``` diff --git a/files/zh-cn/web/api/filesystemhandle/issameentry/index.md b/files/zh-cn/web/api/filesystemhandle/issameentry/index.md index 1774d2bd5b963a..4f94527c14a305 100644 --- a/files/zh-cn/web/api/filesystemhandle/issameentry/index.md +++ b/files/zh-cn/web/api/filesystemhandle/issameentry/index.md @@ -26,7 +26,7 @@ isSameEntry(fileSystemHandle) ## 示例 -以下函数将单个条目与条目数组进行比对,返回兑现包含不相符条目的新数组的 {{jsxref("Promise")}}。 +以下函数将单个条目与条目数组进行比对,并返回一个 {{jsxref("Promise")}},其会兑现包含不相符条目的新数组。 ```js async function removeMatches(fileEntry, entriesArr) { diff --git a/files/zh-cn/web/api/filesystemhandle/querypermission/index.md b/files/zh-cn/web/api/filesystemhandle/querypermission/index.md index 48a8fffb227d0e..4dd3dbd80618a5 100644 --- a/files/zh-cn/web/api/filesystemhandle/querypermission/index.md +++ b/files/zh-cn/web/api/filesystemhandle/querypermission/index.md @@ -27,9 +27,9 @@ queryPermission(descriptor) ### 返回值 -一个兑现为 {{domxref('PermissionStatus.state')}} 的 {{jsxref("Promise")}},其值为 `'granted'`、`'denied'` 或 `'prompt'`。它也可能因出现以下例外情况之一而被拒绝。 +一个兑现为 {{domxref('PermissionStatus.state')}} 的 {{jsxref("Promise")}},其值为 `'granted'`、`'denied'` 或 `'prompt'`。它也可能因出现以下异常而被拒绝。 -如果其兑现为“prompt”,则网站必须先调用 `requestPermission()`,然后才能对句柄执行任何操作。如果其兑现为“denied”,则任何操作都将被拒绝。通常,本地文件系统句柄工厂返回的句柄最初将解析为“granted”作为其读取权限状态。但是,除了通过用户撤销权限之外,从 IndexedDB 检索到的句柄也可能解析为“prompt”。 +如果其兑现为“prompt”,则网站必须先调用 `requestPermission()`,然后才能对句柄执行任何操作。如果其兑现为“denied”,则任何操作都将被拒绝。通常,本地文件系统句柄工厂返回的句柄最初将兑现“granted”作为其读取权限状态。但是,除了通过用户撤销权限之外,从 IndexedDB 检索到的句柄也可能兑现为“prompt”。 ### 异常 diff --git a/files/zh-cn/web/api/filesystemhandle/requestpermission/index.md b/files/zh-cn/web/api/filesystemhandle/requestpermission/index.md index f204451d76edc3..15724cb7c9617d 100644 --- a/files/zh-cn/web/api/filesystemhandle/requestpermission/index.md +++ b/files/zh-cn/web/api/filesystemhandle/requestpermission/index.md @@ -27,7 +27,7 @@ requestPermission(descriptor) ### 返回值 -一个兑现为 {{domxref('PermissionStatus.state')}} 的 {{jsxref("Promise")}},其值为 `'granted'`、`'denied'` 或 `'prompt'`。它也可能因出现以下例外情况之一而被拒绝。 +一个兑现为 {{domxref('PermissionStatus.state')}} 的 {{jsxref("Promise")}},其值为 `'granted'`、`'denied'` 或 `'prompt'`。它也可能因出现以下异常而被拒绝。 ### 异常 @@ -35,10 +35,10 @@ requestPermission(descriptor) - : 如果没有指定参数或者 `mode` 的值不是 `'read'` 或 `'readwrite'`,则抛出此异常。 - `SecurityError` {{domxref("DOMException")}} - : 在下列情况之一发生时抛出: - - 该方法是在与顶级上下文不[同源](/zh-CN/docs/Web/Security/Same-origin_policy)的上下文中调用的(例如跨源 iframe). - - 没有瞬态用户激活,例如按下按钮。这包括当句柄处于无法使用用户激活的非 Window 上下文中时,例如 Worker. + - 该方法是在与顶级上下文不[同源](/zh-CN/docs/Web/Security/Same-origin_policy)的上下文(例如跨源 iframe)中调用的。 + - 没有瞬态用户激活,例如按下按钮。这包括当句柄处于无法使用用户激活的非 Window 上下文(例如 Worker)中时。 -## 安全性 +## 安全 [瞬态用户激活](/zh-CN/docs/Web/Security/User_activation)是必需的。用户必须与页面或 UI 元素进行交互才能使该特性正常运行。