From bfdccd2e0ecf8ce3ab1f3d803e3a182a029fc930 Mon Sep 17 00:00:00 2001 From: Hoarfroster Date: Mon, 19 Aug 2024 10:40:15 +0800 Subject: [PATCH 001/144] zh-CN: create `action.setBadgeTextColor()` (#22968) Co-authored-by: A1lo --- .../api/action/setbadgetextcolor/index.md | 111 ++++++++++++++++++ 1 file changed, 111 insertions(+) create mode 100644 files/zh-cn/mozilla/add-ons/webextensions/api/action/setbadgetextcolor/index.md diff --git a/files/zh-cn/mozilla/add-ons/webextensions/api/action/setbadgetextcolor/index.md b/files/zh-cn/mozilla/add-ons/webextensions/api/action/setbadgetextcolor/index.md new file mode 100644 index 00000000000000..323b379376e331 --- /dev/null +++ b/files/zh-cn/mozilla/add-ons/webextensions/api/action/setbadgetextcolor/index.md @@ -0,0 +1,111 @@ +--- +title: action.setBadgeTextColor() +slug: Mozilla/Add-ons/WebExtensions/API/action/setBadgeTextColor +l10n: + sourceCommit: f6ff6e14c5af7cb9ed701d7f4506f770014c704f +--- + +{{AddonSidebar}} + +设置浏览器操作的徽章文本颜色。未指定徽章文本颜色的标签页将继承全局徽章文本颜色。 + +> [!NOTE] +> 该 API 在 Manifest V3 或更高版本中可用。 + +## 语法 + +```js-nolint +browser.action.setBadgeTextColor( + details // 对象 +) +``` + +### 参数 + +- `details` + + - : 一个含有下列属性的对象: + + - `color` + + - : 颜色,指定为一下之一: + + - 字符串:任意 CSS [\](/zh-CN/docs/Web/CSS/color_value) 值,例如 `"red"`、`"#FF0000"` 或 `"rgb(255 0 0)"`。若字符串不是一个正确的颜色,则 Promise 会被拒绝且背景颜色不会被更改。 + - `{{WebExtAPIRef('action.ColorArray')}}` 对象。 + - `null`,若指定了 `tabId`,则会移除该标签页的徽章文本颜色,让标签页继承全局徽章文本颜色;反之,会撤销对全局徽章文本颜色的修改使之变回默认取值。 + + - `tabId` {{optional_inline}} + - : `integer`,指定要设置徽章文本颜色的标签页。当用户导航到新页面的时候,文本颜色将被重置。 + - `windowId` {{optional_inline}} + - : `integer`,指定要设置徽章文本颜色的窗口。 + + + +- 若同时指定了 `windowId` 和 `tabId`,则函数出错且颜色不会被设置。 +- 若同时未指定 `windowId` 和 `tabId`,则将设置全局徽章文本颜色。 + +## 示例 + +徽章文本颜色最初设置为红色,并且当浏览器操作被单击时变为绿色: + +```js +browser.action.setBadgeText({ text: "1234" }); +browser.action.setBadgeTextColor({ color: "red" }); + +browser.action.onClicked.addListener(() => { + browser.action.setBadgeTextColor({ color: "green" }); +}); +``` + +仅为活动标签页设置徽章文本颜色: + +```js +browser.action.setBadgeText({ text: "1234" }); +browser.action.setBadgeTextColor({ color: "red" }); + +browser.action.onClicked.addListener((tab) => { + browser.action.setBadgeTextColor({ + color: "green", + tabId: tab.id, + }); +}); +``` + +{{WebExtExamples}} + +## 浏览器兼容性 + +{{Compat}} + +> [!NOTE] +> 该 API 基于 Chromium 的 [`chrome.action`](https://developer.chrome.com/docs/extensions/reference/action/#method-setBadgeBackgroundColor) API。本文衍生自 Chromium 代码中的 [`browser_action.json`](https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/browser_action.json)。 + + From bd6f8825bee37fe093c86ba96473015b2b3e48f6 Mon Sep 17 00:00:00 2001 From: Masahiro FUJIMOTO Date: Mon, 19 Aug 2024 20:48:24 +0900 Subject: [PATCH 002/144] =?UTF-8?q?2024/08/02=20=E6=99=82=E7=82=B9?= =?UTF-8?q?=E3=81=AE=E8=8B=B1=E8=AA=9E=E7=89=88=E3=81=AB=E5=9F=BA=E3=81=A5?= =?UTF-8?q?=E3=81=8D=E6=9B=B4=E6=96=B0=20(#23072)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * 2024/08/02 時点の英語版に基づき更新 * Update files/ja/web/http/cookies/index.md Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --------- Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- files/ja/web/http/cookies/index.md | 277 ++++++++++++++++------------- 1 file changed, 154 insertions(+), 123 deletions(-) diff --git a/files/ja/web/http/cookies/index.md b/files/ja/web/http/cookies/index.md index 384e0a5ef3f7ee..a8aedffa1ddaf2 100644 --- a/files/ja/web/http/cookies/index.md +++ b/files/ja/web/http/cookies/index.md @@ -2,40 +2,53 @@ title: HTTP Cookie の使用 slug: Web/HTTP/Cookies l10n: - sourceCommit: 98f4d0818bc8fbe863130b41703df069b0d816bd + sourceCommit: cb132bc83b660e51be8959de5336c00b08030104 --- {{HTTPSidebar}} -**HTTP Cookie** (ウェブ Cookie、ブラウザー Cookie) は、サーバーがユーザーのウェブブラウザーに送信する小さなデータであり、ブラウザーに保存され、その後のリクエストと共に同じサーバーへ返送されます。一般的には、 2 つのリクエストが同じブラウザーから送信されたものであるかを知るために使用されます。例えば、ユーザーのログイン状態を維持することができます。 Cookie は、[ステートレス](/ja/docs/Web/HTTP/Overview#http_はステートレスであるがセッションレスではない)な HTTP プロトコルのためにステートフルな情報を記憶します。 +**Cookie**(ウェブ Cookie、ブラウザー Cookie とも呼ぶ)は、サーバーがユーザーのウェブブラウザーに送信する小さなデータです。ブラウザーは Cookie を保存したり、新しい Cookie を作成したり、既存の Cookie を変更したり、後でリクエストされたときに同じサーバーにそれらを送り返したりすることができます。 Cookie により、ウェブアプリケーションは限られた量のデータを格納し、状態についての情報を記憶することができます。HTTP プロトコルは既定では[ステートレス](/ja/docs/Web/HTTP/Overview#http_はステートレスであるがセッションレスではない)だからです。 -Cookie は主に、以下の 3 つの用途で使用されます。 +この記事では、Cookie の主な用途を調べ、使用する際の最善の手法を説明し、プライバシーとセキュリティへの影響を見ていきます。 -- セッション管理 - - : ログイン、ショッピングカート、ゲームのスコア、またはその他のサーバーが覚えておくべきもの -- パーソナライズ - - : ユーザー設定、テーマ、その他の設定 -- トラッキング - - : ユーザーの行動の記録および分析 +## Cookie の用途 -Cookie は、クライアント側の汎用的な記憶領域として使用されたことがあります。これは他にクライアントへデータを保存する手段がなかった頃は合理的でしたが、現在では新しいストレージ API を使用することが推奨されています。 Cookie はすべてのリクエストで送信されるので、(特にモバイルデータ通信で)性能を悪化させる可能性があります。クライアントストレージ向けの新しい API として、[ウェブストレージ API](/ja/docs/Web/API/Web_Storage_API) (`localStorage` および `sessionStorage`) と [IndexedDB](/ja/docs/Web/API/IndexedDB_API) があります。 +通常、サーバーは HTTP Cookie のコンテンツを 使用して、さまざまなリクエストが同じブラウザー/ユーザーから送られたものかどうかを判断し、その後、必要に応じて個人設定または一般的なレスポンスを発行します。以下では、非常にシンプルなログインシステムについて説明します。 -> [!NOTE] -> 保存された Cookie (およびウェブページが使用できる他のストレージ) を確認するには、開発ツールの[ストレージインスペクター](https://firefox-source-docs.mozilla.org/devtools-user/storage_inspector/index.html)を有効化して、ストレージのツリーで Cookie を選択してください。 +1. ユーザーは、例えばフォーム送信により、ログイン資格情報をサーバーに送信します。 +2. 資格情報が正しい場合、サーバーはユーザーがログインしたことを示すように UI を更新し、ブラウザー上のログイン状態を記録するセッション ID を含むクッキーを返します。 +3. 後日、ユーザーは同じサイトの別のページに移動します。ブラウザーは、ユーザーがまだサインインしていると認識していることを示すために、セッション ID を含むクッキーを、対応するリクエストとともに送信します。 +4. サーバーはセッション ID をチェックし、有効であれば、ユーザーに新しいページの個人設定版を送信します。無効であれば、セッション ID は削除され、ユーザーにはページの一般版が表示されます(あるいは、「アクセスが拒否されました」というメッセージが表示され、再度サインインするよう求められる場合もあります)。 + +![上記のログインシステムの説明の視覚表現](cookie-basic-example.png) + +Cookie は、主に次の 3 つの用途で使用されます。 + +- **セッション管理**: ユーザーのログイン状態、ショッピングカート、ゲームのスコア、またはその他のユーザーセッションに関するサーバーが覚えておくべきその他のもの。 +- **パーソナライズ**: 表示言語や UI テーマのようなユーザー設定。 +- **トラッキング**: ユーザーの行動の記録および分析。 -## Cookie の作成 +### データストレージ -HTTP リクエストを受け取った後、サーバーはレスポンスで {{HTTPHeader("Set-Cookie")}} ヘッダーを送信することができます。通常 Cookie はブラウザーに保存され、また Cookie は同じサーバーに対して行われるリクエストと共に HTTP の {{HTTPHeader("Cookie")}} ヘッダーの中で送信されます。有効期限や期間を設定することができ、その後は Cookie が送信されなくなります。特定のドメインやパスへの追加の制約を設定することができ、Cookie をどこに送信するかを制限することができます。以下で言及されているヘッダー属性の詳細については、 {{HTTPHeader("Set-Cookie")}} のリファレンス記事を参照してください。 +ウェブの初めの頃、Cookie は汎用的なクライアント側データのストレージ用途に使用されていました。他に選択肢がなかったためです。より新しいストレージ API 、例えば [ウェブストレージ API](/ja/docs/Web/API/Web_Storage_API) (`localStorage` および `sessionStorage`) や [IndexedDB](/ja/docs/Web/API/IndexedDB_API) などが現在では推奨されています。 + +これらはストレージを前提に設計されており、サーバーにデータを送信することはなく、Cookie をストレージとして使用する際に生じる、次のような他の欠点もありません。 + +- ブラウザーは一般的に、ドメインごとの Cookie の最大数(ブラウザーによって異なりますが、通常は数百)と、Cookie ごとの最大サイズ(通常は 4KB)に制限されています。ストレージ APIは 、より大量のデータを格納することができます。 + Cookie はリクエストのたびに送信されるため、パフォーマンスを低下させる可能性があります(例えば、モバイルの低速データ接続の場合)。特に、多くの Cookie を設定している場合はその傾向が強くなります。 + +> [!NOTE] +> 保存された Cookie (およびウェブページが使用できる他のストレージ) を確認するには、Firefox 開発ツールの[ストレージインスペクター](https://firefox-source-docs.mozilla.org/devtools-user/storage_inspector/index.html)か、Chrome 開発者ツールの[アプリケーションパネル](https://developer.chrome.com/docs/devtools/progressive-web-apps)を利用することで実現できます。 -### `Set-Cookie` ヘッダーと `Cookie` ヘッダー +## Cookie の作成、削除、更新 -HTTP の {{HTTPHeader("Set-Cookie")}} レスポンスヘッダーは、サーバーがユーザーエージェントへ Cookie を送信するために使用します。単純な Cookie は次のように設定されます。 +HTTP リクエストを受信した後、サーバーはレスポンスに 1 つまたは複数の {{HTTPHeader("Set-Cookie")}} ヘッダーを送信することができ、それぞれのヘッダーが別個の Cookie を設定します。単純な Cookie は、次のように名前付きの値のペアを指定することで設定されます。 ```http Set-Cookie: = ``` -これは、サーバーからクライアントへ Cookie の組み合わせを保存するよう指示することを表します。 +次の HTTP レスポンスは、受信側のブラウザーに Cookie のペアを格納するように指示します。 ```http HTTP/2.0 200 OK @@ -46,7 +59,10 @@ Set-Cookie: tasty_cookie=strawberry [ページの内容] ``` -また、そのサーバーへのその後のすべてのリクエストにおいて、ブラウザーは以前格納されたすべての Cookie を、 {{HTTPHeader("Cookie")}} ヘッダーを使用してサーバーへ送信します。 +> [!NOTE] +> さまざまなサーバーサイド言語/フレームワークで `Set-Cookie` ヘッダーを使用する方法を調べてみましょう。 [PHP](https://www.php.net/manual/en/function.setcookie.php), [Node.JS](https://nodejs.org/dist/latest-v14.x/docs/api/http.html#http_response_setheader_name_value), [Python](https://docs.python.org/3/library/http.cookies.html), [Ruby on Rails](https://api.rubyonrails.org/classes/ActionDispatch/Cookies.html) + +新しいリクエストが行われると、ブラウザーは通常、HTTP ヘッダー内の {{HTTPHeader("Cookie")}} で、前回格納された Cookie を現在のドメイン用にサーバーに送信します。 ```http GET /sample_page.html HTTP/2.0 @@ -54,158 +70,180 @@ Host: www.example.org Cookie: yummy_cookie=choco; tasty_cookie=strawberry ``` -> [!NOTE] -> 様々なサーバー側アプリケーションにおける `Set-Cookie` ヘッダーの使い方を紹介します。 -> -> - [PHP](https://www.php.net/manual/ja/function.setcookie.php) -> - [Node.JS](https://nodejs.org/dist/latest-v14.x/docs/api/http.html#http_response_setheader_name_value) -> - [Python](https://docs.python.org/3/library/http.cookies.html) -> - [Ruby on Rails](https://api.rubyonrails.org/classes/ActionDispatch/Cookies.html) +### 削除: Cookie の持続時間の定義 + +有効期限日または期間を指定すると、それ以降は Cookie が削除され、送信されなくなります。Cookie を作成する際に {{HTTPHeader("Set-Cookie")}} ヘッダーに設定する属性に応じて、永続的 Cookie またはセッション Cookie のどちらかになります。 + +- 永続的 Cookie は、`Expires` 属性で指定された日時が過ぎると削除されます。 + + ```http + Set-Cookie: id=a3fWa; Expires=Thu, 31 Oct 2021 07:28:00 GMT; + ``` + + または、`Max-Age` 属性で指定した期間が経過した後にも削除されます。 -### Cookie の持続時間の定義 + ```http + Set-Cookie: id=a3fWa; Max-Age=2592000 + ``` -Cookie の持続時間は 2 通りの方法で定義することができます。 + > **メモ:** `Expires` は `Max-Age` よりも長い期間の指定ができますが、`Max-Age` のほうがエラーの可能性が低く、両方が設定されている場合はこちらが優先されます。この理由としては、`Expires` で日時を設定した場合、Cookie が設定されているクライアントの日時との相対値となるためです。もしサーバーが異なった日時を指定していると、エラーが発生する可能性があります。 -- _セッション_ Cookie は現在のセッションが終了すると削除されます。ブラウザーはいつ「現在のセッション」が終わったと見なすかを定義し、ブラウザーによっては再起動時に*セッションの復元*を使用することができます。そのため、結果的にセッション Cookie が無期限に持続することがあります。 -- _持続的_ Cookie は、 `Expires` 属性で指定された時刻、または `Max-Age` で指定された期間が経過した後に削除されます。 +- セッション Cookie(`Max-Age` または `Expires` 属性のない Cookie)は、現在のセッションが終了すると削除されます。ブラウザーが「現在のセッション」がいつ終わるかを定義しますし、ブラウザーによっては再起動時にセッションを復元することもあります。これにより、セッション Cookie がいつまでも有効な状態になるという問題が発生する可能性があります。 -例を示します。 + > [!NOTE] + > ユーザー認証を行うウェブサイトでは、ユーザーが認証を行うたびに、すでに存在するセッションCookieも含めて、再生成して再送信する必要があります。この手法は、サードパーティがユーザーのセッションを再利用する「セッション固定攻撃」を防ぐのに役立ちます。 + +Cookie が削除された後に Cookie を再作成するよう設計された技術がいくつかあります。これらは「ゾンビ Cookie」として知られています。これらの技術は、ユーザーの[プライバシー](#トラッキングとプライバシー)と制御の原則に違反し、[データプライバシー規制](#cookie_に関する規制)に違反する可能性があり、また、それらを使用するウェブサイトが法的責任を問われる可能性もあります。 + +### Cookie の値の更新 + +HTTP 経由で Cookie を更新するには、サーバーは既存の Cookie の名前と新しい値を指定した {{HTTPHeader("Set-Cookie")}} ヘッダーを送信します。例えば次のようにします。 ```http -Set-Cookie: id=a3fWa; Expires=Thu, 31 Oct 2021 07:28:00 GMT; +Set-Cookie: id=new-value ``` -> **メモ:** `Expires` の日付を設定した場合、設定された日時はサーバーではなく、Cookie が設定されるクライアントの日時に関連します。 +これを行う理由はいくつか考えられます。例えば、ユーザーが環境設定を更新し、アプリケーションがクライアント側データに変更を反映させたい場合などです([ウェブストレージ](/ja/docs/Web/API/Web_Storage_API)などのクライアント側ストレージメカニズムを使用して、これを行うこともできます)。 -サイトがユーザーを認証する場合、ユーザーが認証するたびに、すでに存在するセッション Cookie も含めて、セッション Cookie を再生成して再送する必要があります。この手法は、第三者がユーザーのセッションを再利用する[セッション固定攻撃](/ja/docs/Web/Security/Types_of_attacks#セッションの固定)を防ぐのに役立ちます。 +#### JavaScript からの Cookie の更新 -### Cookie へのアクセス制限 +ブラウザーでは、JavaScript を使用して {{domxref("Document.cookie")}} プロパティ、または非同期の {{domxref("Cookie_Store_API", "Cookie Store API", "", "nocode")}} を使用して新しい Cookie を作成することができます。 下記すべての例で `Document.cookie` を使用していることに注意してください。これは最も広く対応/確立されているオプションだからです。 -Cookie が安全に送信され、意図しない第三者やスクリプトからアクセスされないようにするには、 `Secure` 属性と `HttpOnly` 属性の 2 つの方法があります。 +```js +document.cookie = "yummy_cookie=choco"; +document.cookie = "tasty_cookie=strawberry"; +``` + +また、[`HttpOnly`](/ja/docs/Web/HTTP/Headers/Set-Cookie#httponly) 属性が指定されていない既存の Cookie にアクセスし、新しい値を設定することもできます(作成した `Set-Cookie` ヘッダーで指定されている場合)。 -`Secure` 属性がついた Cookie は HTTPS プロトコル上の暗号化されたリクエストでのみサーバーに送信され、安全でない HTTP では決して送信されないため、{{Glossary("MitM", "中間者")}}攻撃者が簡単にアクセスすることはできません。(URL に `http:` を含む) 安全でないサイトは、 `Secure` 属性を使用して Cookie を設定することができません。ただし、`Secure` によって Cookie 内の機密情報へのアクセスをすべて防げると思ってはいけません。例えば、クライアントのハードディスクへアクセスすることで読み取られる可能性があります。 +```js +console.log(document.cookie); +// 出力: "yummy_cookie=choco; tasty_cookie=strawberry" -`HttpOnly` 属性を持つ Cookie は、 JavaScript の {{domxref("Document.cookie")}} API にはアクセスできません。サーバーに送信されるだけです。例えば、サーバー側のセッションを持続させる Cookie は JavaScript が利用する必要はないので、 `HttpOnly` 属性をつけるべきです。この予防策は、クロスサイトスクリプティング ([XSS](/ja/docs/Web/Security/Types_of_attacks#クロスサイトスクリプティング_xss)) 攻撃を緩和するのに役立ちます。 +document.cookie = "yummy_cookie=blueberry"; + +console.log(document.cookie); +// 出力: "tasty_cookie=strawberry; yummy_cookie=blueberry" +``` -例を示します。 +セキュリティ上の理由により、リクエストを開始する際に、更新された `Cookie` ヘッダーを直接送信して Cookie 値を変更することはできません。例えば、{{domxref("Window/fetch", "fetch()")}} や {{domxref("XMLHttpRequest")}} を使用してリクエストを開始する場合は、Cookie値を変更できません。JavaScript で Cookie を変更しない方がよい理由がまだあります。例えば、Cookie を作成する際に `HttpOnly` を設定するには、[セキュリティ](#セキュリティ)の節を参照してください。 + +## セキュリティ + +Cookie に情報を格納した場合、既定ではすべての Cookie 値がエンドユーザーに表示され、変更することができます。例えば、悪意のある人物が Cookie にアクセスしたり、変更したり、本来送信されるべきではないドメインに送信したりするなど、Cookie が悪用されることは避けなければなりません。 その潜在的な影響は、アプリケーションが動作しない、あるいは奇妙な動作をするなど、わずらわしいものから、壊滅的なものまで、さまざまな範囲に及びます。 例えば、犯罪者がセッションIDを盗み、それを他人になりすましてログインしているように見せかけるCookieを設定し、その過程で銀行口座や e コマースのアカウントを制御できる可能性があります。 + +Cookie を保護する方法はいくつかあり、この節で説明します。 + +### Cookie へのアクセスをブロック + +Cookie が安全に送信され、意図しない第三者やスクリプトからアクセスされないようにするには、 `Secure` 属性と `HttpOnly` 属性の 2 つの方法があります。 ```http Set-Cookie: id=a3fWa; Expires=Thu, 21 Oct 2021 07:28:00 GMT; Secure; HttpOnly ``` -### Cookie の送信先の定義 +- `Secure` 属性がついた Cookie は、HTTPS プロトコル上の暗号化されたリクエストでのみサーバーに送信されます。安全でない HTTP では決して送信されないため、{{Glossary("MitM", "中間者攻撃の")}}攻撃者が簡単にアクセスすることはできません。(URL に `http:` のついた)安全でないサイトは、 `Secure` 属性を使用して Cookie を設定することができません。ただし、`Secure` によって Cookie 内の機密情報へのアクセスをすべて防げると思ってはいけません。例えば、クライアントのハードディスクへアクセスすることで(また、`HttpOnly` 属性が設定されていない場合は JavaScript から)読み取られる可能性があります。 -`Domain` および `Path` 属性は、Cookie の*スコープ*、つまり Cookie を送信する対象の URL を定義します。 +- `HttpOnly` 属性を持つ Cookie は、 JavaScript の {{domxref("Document.cookie")}} API にはアクセスできません。サーバーに送信されるだけです。例えば、サーバー側のセッションを持続させる Cookie は JavaScript が利用する必要はないので、`HttpOnly` 属性をつけるべきです。この予防策は、クロスサイトスクリプティング([XSS](/ja/docs/Web/Security/Types_of_attacks#クロスサイトスクリプティング_xss))攻撃を緩和するのに役立ちます。 -#### Domain 属性 +> [!NOTE] +> アプリケーションによっては、機密情報を直接 Cookie に格納するのではなく、サーバーが照合する不透明な識別子を使用したり、[JSON Web Tokens](https://jwt.io/) などの代替の認証/機密性メカニズムを調べたりしたほうがいいかもしれません。 -`Domain` 属性は、Cookie を受信することができるホストを指定します。サーバーが `Domain` を指定しなかった場合、ブラウザーは既定でドメインを Cookie を設定したのと同じ{{Glossary("host", "ホスト")}}とし、_サブドメインは除外します_。 `Domain` が指定された場合、サブドメインは常に含まれます。したがって、 `Domain` を指定すると省略時よりも制限が緩和されます。ただし、サブドメイン間でユーザーに関する情報を共有する場合は有用になるでしょう。 +### Cookie の送信先の定義 -例えば、`Domain=mozilla.org` を設定すると、`developer.mozilla.org` のようなサブドメインも含まれます。 +`Domain` および `Path` 属性は、Cookie の「スコープ」、つまり Cookie を送信する対象の URL を定義します。 -#### Path 属性 +- `Domain` 属性は、Cookie を受信することができるサーバーを指定します。指定された場合、指定されたサーバーとサブドメインで Cookie が利用できます。例えば、`mozilla.org` から `Domain=mozilla.org` を設定すると、`developer.mozilla.org` のようなサブドメインも含めて、そのドメインで Cookie が利用できるようになります。 -`Path` 属性は、 `Cookie` ヘッダーを送信するためにリクエストされた URL の中に含む必要がある URL のパスを示します。 `%x2F` ("/") の文字はディレクトリー区切り文字として解釈され、サブディレクトリーにも同様に一致します。 + ```http + Set-Cookie: id=a3fWa; Expires=Thu, 21 Oct 2021 07:28:00 GMT; Secure; HttpOnly; Domain=mozilla.org + ``` -例えば、`Path=/docs` を設定すると、以下のリクエストパスに一致します。 + `Set-Cookie` ヘッダーで `Domain` 属性が指定されていない場合、Cookie はそれを設定したサーバーでは利用できますが、そのサブドメインでは利用できません。そのため、`Domain` を指定することは、それを除外するよりも制限が少なくなります。 + サーバーが `Domain` 属性を設定できるのは自分自身で管理するドメイン、または親ドメインのみであり、サブドメインや他にもドメインには設定できないことに注意してください。 + 例えば、ドメインが `foo.example.com` のサーバーは、この属性を `example.com` または `foo.example.com` に設定することはできますが、`bar.foo.example.com` や `elsewhere.com` には設定できません(ただし、`bar.foo.example.com` などのサブドメインには Cookie が送信されます)。 + 詳細は[不正なドメイン](/ja/docs/Web/HTTP/Headers/Set-Cookie#不正なドメイン)を参照してください。 -- `/docs` -- `/docs/` -- `/docs/Web/` -- `/docs/Web/HTTP` +- `Path` 属性は、 `Cookie` ヘッダーを送信するためにリクエストされた URL の中に含む必要がある URL のパスを示します。 -ただし、これらのリクエストパスには一致しません。 + ```http + Set-Cookie: id=a3fWa; Expires=Thu, 21 Oct 2021 07:28:00 GMT; Secure; HttpOnly; Path=/docs + ``` -- `/` -- `/docsets` -- `/fr/docs` + `%x2F` ("/") の文字はディレクトリー区切り文字として解釈され、サブディレクトリーにも同様に一致します。例えば、`Path=/docs` を設定すると、以下のリクエストパスに一致します。 -#### SameSite 属性 + - `/docs` + - `/docs/` + - `/docs/Web/` + - `/docs/Web/HTTP` -`SameSite` 属性により、サーバーがサイト間リクエスト (ここで{{Glossary("Site", "サイト")}}は登録可能なドメインによって定義されます) と一緒に Cookie を送るべきではないことを要求することができます。これは、クロスサイトリクエストフォージェリー攻撃 ({{Glossary("CSRF")}}) に対していくらかの防御となります。取ることができる値は `Strict`, `Lax`, `None` の 3 つです。 + ただし、これらのリクエストパスには一致しません。 -`Strict` では、ブラウザーは Cookie の元サイトからのリクエストに対してのみ Cookie を送ります。 -`Lax` も同様ですが、ユーザーが Cookie の元サイトに移動したときに(たとえユーザーが異なる形のサイトから来たとしても)ブラウザーは Cookie を送信します。 -例えば、外部サイトからリンクをたどった場合です。 `None` は Cookie を発生元サイトへリクエストとサイト間のリクエストの両方で送信されますが、*安全なコンテキスト*でのみ送信されます(つまり、 `SameSite=None`なら `Secure` 属性も設定する必要があります)。 -もし `SameSite` 属性が設定されていない場合、 Cookie は `Lax` として扱われます。 + - `/` + - `/docsets` + - `/fr/docs` -次に例を示します。 +#### `SameSite` 属性によるサードパーティ Cookie の制御 -```http -Set-Cookie: mykey=myvalue; SameSite=Strict -``` +[`SameSite`](/ja/docs/Web/HTTP/Headers/Set-Cookie#samesitesamesite-value) 属性は、サーバーがサイト間リクエストとともに Cookie を送信するかどうか、すなわちサードパーティ Cookie を送信するかどうかを指定します。サイト間リクエストとは、{{Glossary("Site", "サイト")}}(登録されているドメイン)やスキーム(http または https)がユーザーが現在いるサイトと一致しないリクエストのことです。これには、他のサイト上のリンクがクリックされて自分のサイトに移動する際に送信されるリクエストや、埋め込みサードパーティコンテンツによって送信されるリクエストが含まれます。 -> **メモ:** `SameSite` に関する標準規格が最近変更されました(MDN で文書化している上記の動作は新しい動作です)。 -> ブラウザーの特定の版がこの属性をどのように扱うかの情報については、 Cookie の[ブラウザー互換性](/ja/docs/Web/HTTP/Headers/Set-Cookie/SameSite#ブラウザーの互換性)一覧表を参照してください。 -> -> - `SameSite=Lax` は `SameSite` が指定されなかった場合の新しい既定値です。 -> 以前は、 Cookie は既定ですべてのリクエストに送信されていました。 -> - Cookie に `SameSite=None` が付いた場合は、 `Secure` 属性も指定することになりました(安全なコンテキストが必要になりました)。 -> - 同じドメインの Cookie であっても、異なるスキーム (`http:` か `https:` か) を使用して送信された場合は同じサイトと見なされなくなりました。 +`SameSite` は、情報の漏洩を防止し、ユーザーの[プライバシー](#プライバシーと追跡)を保護し、{{Glossary("CSRF", "クロスサイトリクエストフォージェリー")}}攻撃に対していくらかの防御となります。取ることができる値は `Strict`, `Lax`, `None` の 3 つです。 -#### Cookie の接頭辞 +- `Strict` は、ブラウザーが Cookie の発行元サイトからのリクエストに対してのみ、レスポンスで Cookie を送信するようにします。これは、認証やショッピングカート情報の格納など、常に最初のナビゲーションの後に来る機能に関連する Cookie がある場合に使用すべきです。 -Cookie の仕組みの設計では、 Cookie が安全なオリジンに設定されているかどうか、 Cookie が当初は*どこに*設定されたのかをサーバーが確認することができないようになっています。 + ```http + Set-Cookie: cart=110045_77895_53420; SameSite=Strict + ``` -サブドメイン上にある脆弱性のあるアプリケーションが `Domain` 属性を使用して Cookie を設定すると、ほかのすべてのサブドメインで Cookie にアクセスできるようにすることができます。この仕組みは*セッション固定*攻撃で悪用される可能性があります。主な対策方法は[セッション固定化](/ja/docs/Web/Security/Types_of_attacks#セッションの固定)を参照してください。 + > [!NOTE] + > 機密情報を使用する Cookie は、[有効期限](#削除_cookie_の持続時間の定義)も短く指定しましょう。 -しかし、[多層防御]()として、 Cookie に関する特定の事実を主張するために *Cookie の接頭辞*を使うことが可能です。以下の 2 つの接頭辞が利用可能です。 +- `Lax` も同様ですが、ユーザーが Cookie の発行元サイトに移動(ユーザーが別のサイトから移動してくる場合でも)した際にも、ブラウザーが Cookie を送信します。これは、サイトの表示に影響を与える Cookie に役立ちます。例えば、ウェブサイトにアフィリエイトリンク付きの提携製品情報を持たせることができます。そのリンクで提携サイトに移動すると、アフィリエイトリンクを辿ったことを示す Cookie を設定し、報酬バナーを表示したり、製品購入時に割引を指定したりすることができます。 -- `__Host-` - - : Cookie 名にこの接頭辞がついている場合、 {{HTTPHeader("Set-Cookie")}} ヘッダーが受け入れられるのは `Secure` 属性で指定されており、安全なオリジンから送信されており、 `Domain` 属性を含んで*おらず*、 `Path` 属性が `/` に設定されている場合のみです。この場合、これらの Cookie は「ドメインにロックされている」と見なすことができます。 -- `__Secure-` - - : Cookie 名にこの接頭辞がある場合、 {{HTTPHeader("Set-Cookie")}} ディレクティブが受け入れられるのは、 `Secure` であり、安全なオリジンから送信されている場合のみです。これは `__Host-` 接頭辞よりも弱いものです。 + ```http + Set-Cookie: affiliate=e4rt45dw; SameSite=Lax + ``` -これらの接頭辞が付いていて、制約に適合していない Cookie は、送られてもブラウザーが拒否します。これにより、仮にサブドメインで接頭辞の付いた Cookie を作成した場合、サブドメインに限定されるか、完全に無視されるかします。アプリケーションサーバーは、ユーザーが認証されているか、あるいは CSRF トークンが正しいかどうかを判断するときに、特定の Cookie 名をチェックするだけなので、これはセッションの固定化に対する防御手段として効果的に機能します。 +- `None` は、Cookie が元のサイトとサイト間のリクエストの両方で送信されることを指定します。これは、例えば広告技術や分析ツールのプロバイダーなど、他のサイトに埋め込まれたサードパーティのコンテンツから送信されたリクエストとともに Cookie を送信したい場合に便利です。`SameSite=None` が設定されている場合、`Secure` 属性も設定する必要があることに注意してください。`SameSite=None` では、安全なコンテキストが要求されます。 -> [!NOTE] -> アプリケーションサーバ上では、ウェブアプリケーションは接頭辞を含む完全な Cookie 名をチェック*しなければなりません*。—ユーザーエージェントは、リクエストの {{HTTPHeader("Cookie")}} ヘッダーを送信する前に Cookie から接頭辞を削除*しません*。 + ```http + Set-Cookie: widget_session=7yjgj57e4n3d; SameSite=None; Secure; HttpOnly + ``` -Cookie の接頭辞とブラウザー対応の現在の状態については、 [Set-Cookie リファレンス記事の接頭辞の節](/ja/docs/Web/HTTP/Headers/Set-Cookie#クッキーの接頭辞)を参照してください。 +もし `SameSite` 属性が設定されていない場合、 Cookie は既定で `Lax` として扱われます。 -#### JavaScript での Document.cookies を使用したアクセス +#### Cookie の接頭辞 -{{domxref("Document.cookie")}} プロパティを使用して新しい Cookie を作成することができますし、 `HttpOnly` フラグが設定されていない限り、既存の Cookie に JavaScript からアクセスすることもできます。 +Cookie の仕組みの設計上、サーバーは、Cookie が安全なオリジンから設定されたことを確認することはできず、Cookie が元々どこで設定されたのかを見分けることさえできません。 -```js -document.cookie = "yummy_cookie=choco"; -document.cookie = "tasty_cookie=strawberry"; -console.log(document.cookie); -// "yummy_cookie=choco; tasty_cookie=strawberry" とログ出力 -``` +サブドメイン上にある脆弱性のあるアプリケーションが `Domain` 属性を使用して Cookie を設定すると、ほかのすべてのサブドメインで Cookie にアクセスできるようにすることができます。この仕組みは「セッション固定攻撃」で悪用される可能性があります。主な対策方法は[セッション固定化](/ja/docs/Web/Security/Types_of_attacks#セッションの固定)を参照してください。 -JavaScript で生成された Cookie は `HttpOnly` フラグを含むことができません。 +[多層防御]()として、Cookie の接頭辞を使用することで、Cookie に関する特定の事実を主張することが可能です。以下の 2 つの接頭辞が利用可能です。 -後述する[セキュリティ](#セキュリティ)の節に記載したとおり、セキュリティの影響に注意してください。JavaScript で使用できる Cookie は、XSS によって盗まれる可能性があります。 +- `__Host-`: Cookie 名にこの接頭辞がついている場合、 {{HTTPHeader("Set-Cookie")}} ヘッダーが受け入れられるのは `Secure` 属性で指定されており、安全なオリジンから送信されており、 `Domain` 属性を含んで*おらず*、 `Path` 属性が `/` に設定されている場合のみです。この場合、これらの Cookie は「ドメインにロックされている」と見なすことができます。 +- `__Secure-`: Cookie 名にこの接頭辞がある場合、 {{HTTPHeader("Set-Cookie")}} ディレクティブが受け入れられるのは、 `Secure` であり、安全なオリジンから送信されている場合のみです。これは `__Host-` 接頭辞よりも弱いものです。 -## セキュリティ +これらの接頭辞が付いていて、制約に適合していない Cookie は、送られてもブラウザーが拒否します。これにより、仮にサブドメインで接頭辞の付いた Cookie を作成した場合、サブドメインに限定されるか、完全に無視されるかします。アプリケーションサーバーは、ユーザーが認証されているか、あるいは CSRF トークンが正しいかどうかを判断するときに、特定の Cookie 名をチェックするだけなので、これはセッションの固定化に対する防御手段として効果的に機能します。 > [!NOTE] -> 情報を Cookie に保存するときは、すべての Cookie の値がエンドユーザーから見え、変更できることを理解しておいてください。アプリケーションによっては、サーバー側で検索される不透明な識別子を使用するか、 JSON ウェブトークンのような代替の認証/機密性メカニズムを調べたほうが良いかもしれません。 +> アプリケーションサーバー上では、ウェブアプリケーションは接頭辞を含む完全な Cookie 名をチェック*しなければなりません*。ユーザーエージェントは、リクエストの {{HTTPHeader("Cookie")}} ヘッダーを送信する前に Cookie から接頭辞を削除しません。 -Cookie への攻撃を緩和する方法には次のようなものがあります。 +Cookie の接頭辞とブラウザー対応の現在の状態については、 [Set-Cookie リファレンス記事の接頭辞の節](/ja/docs/Web/HTTP/Headers/Set-Cookie# Cookie の接頭辞)を参照してください。 -- `HttpOnly` 属性を使用して、 JavaScript から Cookie の値にアクセスすることを防ぎます。 -- 機密情報 (認証を示す場合など) のために使用された Cookie は、持続時間を短く、 `SameSite` 属性を `Strict` または `Lax` に設定してください。 (上記の [SameSite Cookie](#samesite_属性) を参照。) [SameSite に対応しているブラウザー](/ja/docs/Web/HTTP/Headers/Set-Cookie#ブラウザーの互換性)では、これは、認証 Cookie がオリジン間リクエストと一緒に送信されないようにする効果があるので、そのようなリクエストはそのアプリケーションサーバーに対して事実上認証されていないことになります。 +## プライバシーとトラッキング -## トラッキングとプライバシー +先ほど、サードパーティ Cookie が送信されるタイミングを制御できる `SameSite` 属性についてお話しし、この属性がユーザーのプライバシーに役立つことを説明しました。プライバシーは、ウェブサイトを構築する上で非常に重要な考慮事項です。正しく行えば、ユーザーとの信頼関係を構築することができます。しかし、間違った方法で行うと、信頼関係を完全に損ない、他にもさまざまな問題を引き起こす可能性があります。 -### サードパーティの Cookie +サードパーティ Cookie は、{{htmlelement("iframe")}} を使用してサイトに埋め込まれたサードパーティコンテンツによって設定することができます。 サードパーティ Cookie には、ユーザープロファイル情報の共有、広告表示回数のカウント、または関連の異なるドメインにわたる分析情報の集合など、正当な用途が数多くあります。 -Cookie はドメインとスキーム(`http` や `https` など)に関連付けられ、 {{HTTPHeader("Set-Cookie")}} の `Domain` 属性が設定された場合はサブドメインにも関連付けられます。 -Cookie のドメインとスキームが現在のページと一致している場合、その Cookie はこのページと同じサイトからのものと見なされ、_ファーストパーティ Cookie_ と呼ばれます。 +しかし、サードパーティ Cookie の使い方によっては、不快で押しつけがましいユーザー体験になることもあります。サードパーティのサーバーが、複数のサイトにアクセスする際に同じブラウザーから送信された Cookie に基づいて、ユーザーの閲覧履歴や習慣に関するプロファイルを作成することができます。例えば、あるサイトで製品情報を検索したところ、その後、どこにアクセスしても類似した製品の広告がウェブ上で表示される、というようなケースがこれに該当します。 -ドメインとスキームが異なる場合、その Cookie は同じサイトのものとはみなされず、_サードパーティ Cookie_ と呼ばれます。 -ウェブページをホスティングしているサーバーがファーストパーティ Cookie を設定する一方で、ページには他のドメインのサーバーに保存されている画像やその他のコンポーネント (例えば、広告バナー) が含まれている場合があり、サードパーティ Cookie を設定することがあります。 -これらは主にウェブ上での広告やトラッキングに使用されます。 -例えば [Google が使用している Cookie の種類](https://policies.google.com/technologies/types)を参照してください。 +ブラウザーのベンダーは、ユーザーがこのような動作を好まないことを知っており、その結果、サードパーティ Cookie を既定ではすべてブロックする、あるいは少なくともその方向で計画を進めています。サードパーティ Cookie (または単にトラッキング Cookie)は、その他のブラウザーの設定や拡張機能でブロックすることができます。 -サードパーティのサーバーは、複数のサイトにアクセスした際に同じブラウザーから送信された Cookie に基づいて、ユーザーの閲覧履歴や習慣のプロファイルを構築することができます。 Firefox は既定で、トラッカーを含むことが知られているサードパーティの Cookie をブロックします。サードパーティの Cookie (またはトラッキング Cookie ) は、他のブラウザーの設定や拡張機能によってもブロックされる場合があります。 Cookie をブロックすると、一部のサードパーティ製コンポーネント (ソーシャルメディアウィジェットなど) が意図した通りに機能しなくなることがあります。 - -ユーザーのプライバシーを尊重し、サードパーティの追跡を最小限に抑えたい開発者にとって、有益な機能がいくつか使用されています。 +> [!NOTE] +> Cookie をブロックすると、サードパーティの部品(ソーシャルメディアウィジェットなど)が意図通りに機能しなくなる場合が発生します。ブラウザーがサードパーティ Cookie にさらに制限を課すため、開発者はサードパーティ Cookie への依存を縮小する方法を検討し始める必要があります。 -- サーバーは Cookie の [SameSite 属性](/ja/docs/Web/HTTP/Headers/Set-Cookie/SameSite)を設定することで、サードパーティーの Cookie を送るかどうか指定することができます(そしてそうすべきです)。 -- [Cookies Having Independent Partitioned State (CHIPS)](/ja/docs/Web/Privacy/Partitioned_cookies) は、開発者が、最上位のサイトごとに別個の Cookie ジャーを持つ、分割されたストレージへの Cookie のオプトインができるようにします。これは、サードパーティのトラッキングに Cookie を使用することを許可しないブラウザーで、サードパーティの Cookie の有効な非トラッキング用途が引き続き動作するようにするものです。 +サードパーティ Cookie のより詳しい情報、それに関連する課題、利用できる代替策については、[サードパーティ Cookie](/ja/docs/Web/Privacy/Third-party_cookies) の記事を参照してください。プライバシー全般に関するより詳しい情報は、[プライバシー](/ja/docs/Web/Privacy)のランディングページをご覧ください。 ### Cookie に関する規制 @@ -225,20 +263,13 @@ Cookie の使用を対象とした法規制には、以下のようなものが 地域によっては、他にも Cookie の使用を管理する規制があるかもしれません。これらの規制を理解し遵守することは、自分自身の責任となります。これらの規制を遵守するのに役立つ「Cookie 禁止」コードを提供している会社もあります。 -## ブラウザーに情報を格納する他の方法 - -ブラウザーにデータを保存する別のアプローチとして、 [Web Storage API](/ja/docs/Web/API/Web_Storage_API/Using_the_Web_Storage_API) があります。 [window.sessionStorage](/ja/docs/Web/API/Window/sessionStorage) と [window.localStorage](/ja/docs/Web/API/Window/localStorage) プロパティはセッション Cookie と持続的 Cookie に対応していますが、ストレージの容量制限が Cookie より大きく、サーバーに送信されることはありません。より構造化された大量のデータは、 [IndexedDB API](/ja/docs/Web/API/IndexedDB_API) またはその上に構築されたライブラリを使用して保存することができます。 - -「ゾンビ」 Cookie と呼ばれる、 Cookie が削除された後に再作成されるようにするための他の技術が作成されています。これらの技術は、ユーザーのプライバシーとユーザー制御の原則に違反し、データプライバシー規制に違反する可能性があり、これらの技術を使用しているウェブサイトが法的責任にさらされる可能性があります。 +> [!NOTE] +> 企業は、自社サイトで使用するCookieの種類を、透明性を高めるため、また規制を遵守するために開示すべきです。例えば、[Google が使用する Cookie の種類に関する通知](https://policies.google.com/technologies/cookies#types-of-cookies)や Mozilla の[ウェブサイト、コミュニケーション、Cookie のプライバシーに関する通知](https://www.mozilla.org/en-US/privacy/websites/#cookies)をご覧ください。 ## 関連情報 -- {{HTTPHeader("Set-Cookie")}} -- {{HTTPHeader("Cookie")}} -- {{domxref("Document.cookie")}} -- {{domxref("Navigator.cookieEnabled")}} -- [SameSite Cookie](/ja/docs/Web/HTTP/Headers/Set-Cookie/SameSite) -- [ストレージインスペクターを使った Cookie の調査](https://firefox-source-docs.mozilla.org/devtools-user/storage_inspector/index.html) +- 関連する HTTP ヘッダー: {{HTTPHeader("Set-Cookie")}}, {{HTTPHeader("Cookie")}} +- 関連する JavaScript API: {{domxref("Document.cookie")}}, {{domxref("Navigator.cookieEnabled")}}, {{domxref("Cookie_Store_API", "クッキーストア API", "", "nocode")}} +- [サードパーティ Cookie](/ja/docs/Web/Privacy/Third-party_cookies) - [Cookie specification: RFC 6265](https://datatracker.ietf.org/doc/html/rfc6265) -- [HTTP cookie on Wikipedia](https://en.wikipedia.org/wiki/HTTP_cookie) - [Cookies, the GDPR, and the ePrivacy Directive](https://gdpr.eu/cookies/) From b04d6f3c584bb9c836163673afcaa3fcd675daa7 Mon Sep 17 00:00:00 2001 From: Masahiro FUJIMOTO Date: Mon, 19 Aug 2024 20:48:56 +0900 Subject: [PATCH 003/144] =?UTF-8?q?2024/08/09=20=E6=99=82=E7=82=B9?= =?UTF-8?q?=E3=81=AE=E8=8B=B1=E8=AA=9E=E7=89=88=E3=81=AB=E5=9F=BA=E3=81=A5?= =?UTF-8?q?=E3=81=8D=E6=9B=B4=E6=96=B0=20(#23074)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * 2024/08/09 時点の英語版に基づき更新 * Update files/ja/mdn/writing_guidelines/writing_style_guide/index.md Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --------- Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- .../writing_style_guide/index.md | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/files/ja/mdn/writing_guidelines/writing_style_guide/index.md b/files/ja/mdn/writing_guidelines/writing_style_guide/index.md index bdab328ef493ba..6247b14938cdda 100644 --- a/files/ja/mdn/writing_guidelines/writing_style_guide/index.md +++ b/files/ja/mdn/writing_guidelines/writing_style_guide/index.md @@ -2,7 +2,7 @@ title: 執筆スタイルガイド slug: MDN/Writing_guidelines/Writing_style_guide l10n: - sourceCommit: e60194342c9666ad8a2e6e5e6c25705fe818bcde + sourceCommit: 4ecbac9e89961a132c1e7f5493ec94f60dcb1ee4 --- {{MDNSidebar}} @@ -160,9 +160,11 @@ MDN Web Docs で書くことの第一の目標は、常にオープンなウェ - **例を追加する**。すべての引数、あるいは少なくとも初級から中級レベルのユーザーが使用する可能性のある引数(またはプロパティや属性)と、追加の説明が必要な高度な引数を網羅した例を用意する必要があります。それぞれの例の前には、その例が何をするのか、それを理解するためにはどのような知識が必要なのかなどの概要を示す必要があります。例の後(または例の一部の間)には、コードがどのように動作するかを説明する文章が必要です。例の詳細やエラー処理についても手を抜いてはいけません。読者は例をコピー&ペーストして自分のプロジェクトで使用するでしょうから、そのコードが本番サイトで使用されることになるでしょう。より有用な情報は、[サンプルコードのガイドライン](/ja/docs/MDN/Writing_guidelines/Writing_style_guide/Code_style_guide)を参照してください。 - **使用例を説明する**。説明されている機能について、特に一般的な使用例がある場合は、それについて話してください。一般的な開発上の問題を解決するために文書化された方法を読者が理解すると仮定するのではなく、実際にその利用例についての節を追加し、例とその例がどのように機能するかを説明するテキストを追加してください。 - **画像情報を追加する**。すべての画像や図に適切な [`alt`](/ja/docs/Web/HTML/Element/img#alt) テキストを入れてください。このテキストは、表などのキャプションと同様に重要です。スパイダーは画像をクロールすることができないため、 [`alt`](/ja/docs/Web/HTML/Element/img#alt) テキストによって、埋め込まれたメディアに含まれるコンテンツを検索エンジンのクローラーに伝えることができます。 + > [!NOTE] > 検索エンジンのランキングを操作するために、キーワードを入れすぎたり、関係のないキーワードを使ったりすることは、良い慣習ではありません。このような行為は発見されやすく、罰せられる傾向にあります。 > 同様に、ページのサイズや検索順位を上げるために、反復的で役に立たない内容や、キーワードの塊を実際のページ内に追加するようなことも**しないでください**。これは、コンテンツの読みやすさと検索結果の両方に悪影響を及ぼします。 + - **トピックの内容を重視する**。特定のキーワードではなく、記事のトピックに沿ってコンテンツを書く方がはるかに良いことです。実際、多くの SEO 担当者は、記事の長さに応じて 5 ~ 100 種類のキーワード(ショートテール、ミディアムテール、ロングテール)をリストアップし、記事に含めるようにしています。そうすることで、表現が多様化し、繰り返しが少なくなります。 ## 執筆スタイル @@ -443,7 +445,7 @@ MDN で他のページやページの節のタイトルで参照する場合、 リンク先の節が同じページにある場合は、「上記」 (above) や「下記」 (below) の言葉を用いて、その節の場所を示唆することができます。 -- **正**: この概念は下記の[アクセシビリティの考慮](/ja/docs/Web/CSS/gradient/repeating-conic-gradient#accessibility_concerns)の節で詳しく説明しています。 +- **正**: この概念は下記の[アクセシビリティ](/ja/docs/Web/CSS/gradient/repeating-conic-gradient#アクセシビリティ)の節で詳しく説明しています。 文章の一部を記事や記事の節にリンクすることができます。リンクテキストとして説明的な語句を使用し、リンクされているページに十分なコンテキストを提供するように注意してください。 @@ -519,7 +521,7 @@ markdown の見出しレベルをスキップすることなく、小さい順 ページ内に画像やその他のメディアを載せる場合は、以下のガイドラインに従ってください。 -- メディアのライセンスが使用することを許可していることを確認してください。 [CC0](https://creativecommons.org/share-your-work/public-domain/cc0/) のようなとても寛容なライセンスを有するメディア、または少なくとも私たちの一般的なコンテンツライセンス - [クリエイティブ・コモンズ - 表示・継承ライセンス](https://creativecommons.org/licenses/by-sa/2.5/) (CC-BY-SA) と互換性のあるものを使用するようにしましょう。 +- メディアのライセンスが使用することを許可していることを確認してください。 [CC0](https://creativecommons.org/public-domain/cc0/) のようなとても寛容なライセンスを有するメディア、または少なくとも私たちの一般的なコンテンツライセンス - [クリエイティブ・コモンズ - 表示・継承ライセンス](https://creativecommons.org/licenses/by-sa/2.5/) (CC-BY-SA) と互換性のあるものを使用するようにしましょう。 - 画像の場合、 または を通すとページが軽量化されます。 - `SVG` の場合は、 [SVGOMG](https://jakearchibald.github.io/svgomg/) を通してコードを実行し、 `SVG` ファイルの最後に空行があることを確認してください。 - すべての画像に[説明的な `alt` テキストを入れる](/ja/docs/MDN/Writing_guidelines/Howto/Images_media#画像に代替テキストを追加)必要があります。 @@ -670,16 +672,15 @@ MDN Web Docs 全体の一貫性を保つため、関連情報の節を追加ま ### おすすめのスタイルガイド -ここで取り扱われていない用法とスタイルについて疑問があれば、 [Microsoft Writing Style Guide](https://docs.microsoft.com/style-guide/welcome/) を、それでもダメなら [Chicago Manual of Style](https://www.chicagomanualofstyle.org) を参照してください。 -[非公式の crib sheet for the Chicago Manual of Style](https://faculty.cascadia.edu/cma/HIST148/cmscrib.pdf) がオンラインで利用できます。 +ここで取り扱われていない用法とスタイルについて疑問があれば、 [Microsoft Writing Style Guide](https://learn.microsoft.com/en-us/style-guide/welcome/) を、それでもダメなら [Chicago Manual of Style](https://www.chicagomanualofstyle.org) を参照してください。 ### 言語、文法、綴り 記事の執筆と編集スキルを磨きたければ、以下のリソースが役立つことでしょう。(英語の情報) - [Common errors in English usage](https://brians.wsu.edu/common-errors-in-english-usage/) on brians.wsu.edu -- [English grammar FAQ](https://www-personal.umich.edu/~jlawler/aue.html) on alt-usage-english.org +- [English grammar FAQ](https://websites.umich.edu/~jlawler/aue.html) on alt-usage-english.org - [English language and usage](https://english.stackexchange.com/) on english.stackexchange.com: Question and answer site for English language usage -- [Merriam-Webster's Concise Dictionary of English Usage](https://www.google.com/books/edition/Merriam_Webster_s_Dictionary_of_English/UDIjAQAAIAAJ) on google.com/books (published 2002): Scholarly but user-friendly, evidence-based advice; very good for non-native speakers, especially for preposition usage +- [Merriam-Webster's Concise Dictionary of English Usage](https://books.google.com/books?id=UDIjAQAAIAAJ) on google.com/books (published 2002): Scholarly but user-friendly, evidence-based advice; very good for non-native speakers, especially for preposition usage - [On Writing Well](https://www.harpercollins.com/products/on-writing-well-william-zinsser) by William Zinsser on harpercollins.com (published 2016) -- [Style: Lessons in Clarity and Grace](https://www.google.ca/books/edition/Style/QjskvgEACAAJ) by Joseph Williams and Gregory Colomb on google.com/books (published 2019) +- [Style: Lessons in Clarity and Grace](https://books.google.com/books?id=QjskvgEACAAJ) by Joseph Williams and Gregory Colomb on google.com/books (published 2019) From a58c3eb116ba625679b635ed452a3568d46b42cd Mon Sep 17 00:00:00 2001 From: Masahiro FUJIMOTO Date: Mon, 19 Aug 2024 20:49:49 +0900 Subject: [PATCH 004/144] =?UTF-8?q?2024/07/27=20=E6=99=82=E7=82=B9?= =?UTF-8?q?=E3=81=AE=E8=8B=B1=E8=AA=9E=E7=89=88=E3=81=AB=E5=9F=BA=E3=81=A5?= =?UTF-8?q?=E3=81=8D=E6=9B=B4=E6=96=B0=20(#23075)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * 2024/07/27 時点の英語版に基づき更新 * Update files/ja/web/api/serviceworkerglobalscope/index.md Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --------- Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- .../web/api/serviceworkerglobalscope/index.md | 62 ++++++++++++------- 1 file changed, 39 insertions(+), 23 deletions(-) diff --git a/files/ja/web/api/serviceworkerglobalscope/index.md b/files/ja/web/api/serviceworkerglobalscope/index.md index bf6dd536ce7b52..ce27c90087d0ae 100644 --- a/files/ja/web/api/serviceworkerglobalscope/index.md +++ b/files/ja/web/api/serviceworkerglobalscope/index.md @@ -2,10 +2,10 @@ title: ServiceWorkerGlobalScope slug: Web/API/ServiceWorkerGlobalScope l10n: - sourceCommit: 6d194a9afcce7beef0082c1dc50644bd0fcda635 + sourceCommit: c29cee3dcb0d0e66093dd0c18aa82e0eab9d6d14 --- -{{APIRef("Service Workers API")}} +{{APIRef("Service Workers API")}}{{SecureContext_Header}}{{AvailableInWorkers("service")}} **`ServiceWorkerGlobalScope`** は[サービスワーカー API](/ja/docs/Web/API/Service_Worker_API) のインターフェイスで、サービスワーカーのグローバル実行コンテキストを表します。 @@ -13,7 +13,7 @@ l10n: いったん正しく登録されたら、サービスワーカーはメモリーとプロセッサーの力を温存するため、アイドル時であれば停止させることができます。アクティブなサービスワーカーは、例えば {{domxref("ServiceWorkerGlobalScope.fetch_event", "fetch")}} や {{domxref("ServiceWorkerGlobalScope.message_event", "message")}} などのイベントに応じて自動的に再起動します。 -加えて、同期リクエストはサービスワーカーでは許可されていません。非同期リクエスト、つまり {{domxref("fetch()")}} メソッド経由で初期化されたものが使われます。 +加えて、同期リクエストはサービスワーカーでは許可されていません。非同期リクエスト、つまり {{domxref("WorkerGlobalScope/fetch", "fetch()")}} メソッド経由で初期化されたものが使われます。 このインターフェイスは {{domxref("WorkerGlobalScope")}} インターフェイスと、その親の {{domxref("EventTarget")}} を継承しています。 @@ -21,33 +21,61 @@ l10n: ## インスタンスプロパティ +_このインターフェイスには {{domxref("WorkerGlobalScope")}} インターフェイス、およびその親である {{domxref("EventTarget")}} から継承したプロパティがあります。_ + - {{domxref("caches")}} {{ReadOnlyInline}} - : サービスワーカーに関連づけられた {{domxref("CacheStorage")}} オブジェクトを保持します。 - {{domxref("ServiceWorkerGlobalScope.clients")}} {{ReadOnlyInline}} - : サービスワーカーに関連付けられた {{domxref("Clients")}} オブジェクトを保持します。 +- {{domxref("ServiceWorkerGlobalScope.cookieStore")}} {{ReadOnlyInline}} {{Experimental_Inline}} + - : このサービスワーカーに関連付けられた {{domxref("CookieStore")}} オブジェクトを参照します。 - {{domxref("ServiceWorkerGlobalScope.registration")}} {{ReadOnlyInline}} - : サービスワーカーの登録を表す {{domxref("ServiceWorkerRegistration")}} オブジェクトを保持します。 +- {{domxref("ServiceWorkerGlobalScope.serviceWorker")}} {{ReadOnlyInline}} + - : サービスワーカーを表す {{domxref("ServiceWorker")}} オブジェクトを保持します。 + +## インスタンスメソッド + +_このインターフェイスには {{domxref("WorkerGlobalScope")}} インターフェイス、およびその親である {{domxref("EventTarget")}} から継承したメソッドがあります。_ + +- {{domxref("ServiceWorkerGlobalScope.skipWaiting()")}} + - : 現在のサービスワーカーの登録を、待ち状態からクライアントが使っている時のアクティブ状態に進めます。 ## イベント +このイベントを待ち受けするには、 {{domxref("EventTarget/addEventListener()", "addEventListener()")}} などのメソッドで使用するか、このインターフェイスの `onイベント名` プロパティにイベントリスナー設定するかしてください。 + - {{domxref("ServiceWorkerGlobalScope/activate_event", "activate")}} - : {{domxref("ServiceWorkerRegistration")}} が新しい {{domxref("ServiceWorkerRegistration.active")}} ワーカーを得た時に発生します。 -- {{domxref("ServiceWorkerGlobalScope.canmakepayment_event", "canmakepayment")}} {{Experimental_Inline}} - - : 決済アプリのサービスワーカーで発行され、決済を処理する準備ができたかどうかを調べるために使用されます。特に、販売者のウェブサイトが {{domxref("PaymentRequest.PaymentRequest", "new PaymentRequest()")}} を呼び出すと発行されます。 +- {{domxref("ServiceWorkerGlobalScope/backgroundfetchabort_event", "backgroundfetchabort")}} {{Experimental_Inline}} + - : ユーザーまたはアプリによって[バックグラウンドフェッチ](/ja/docs/Web/API/Background_Fetch_API)処理が中止された場合に発生します。 +- {{domxref("ServiceWorkerGlobalScope/backgroundfetchclick_event", "backgroundfetchclick")}} {{Experimental_Inline}} + - : ユーザーがUIをクリックして[バックグラウンドフェッチ](/ja/docs/Web/API/Background_Fetch_API)処理を実行したときに発生します。 +- {{domxref("ServiceWorkerGlobalScope/backgroundfetchfail_event", "backgroundfetchfail")}} {{Experimental_Inline}} + - : [バックグラウンドフェッチ](/ja/docs/Web/API/Background_Fetch_API)処理で、リクエストの少なくとも 1 つが失敗したときに発生します。 +- {{domxref("ServiceWorkerGlobalScope/backgroundfetchsuccess_event", "backgroundfetchsuccess")}} {{Experimental_Inline}} + - : [バックグラウンドフェッチ](/ja/docs/Web/API/Background_Fetch_API)処理で、リクエストされたすべてが成功したときに発生します。 +- {{domxref("ServiceWorkerGlobalScope/canmakepayment_event", "canmakepayment")}} {{Experimental_Inline}} + - : 決済アプリのサービスワーカーで発行され、決済を処理する準備ができたかどうかを調べるために使用されます。 + 特に、販売者のウェブサイトが {{domxref("PaymentRequest.PaymentRequest", "PaymentRequest()")}} コンストラクターを呼び出すと発生します。 - {{domxref("ServiceWorkerGlobalScope/contentdelete_event", "contentdelete")}} {{Experimental_Inline}} - - : {{domxref("ContentIndex", "コンテンツ索引", "", 1)}}からアイテムが取り除かれたときに発生します。 + - : {{domxref("ContentIndex")}} からアイテムが取り除かれたときに発生します。 +- {{domxref("ServiceWorkerGlobalScope/cookiechange_event", "cookiechange")}} {{Experimental_Inline}} + - : サービスワーカーの Cookie 変更購読リストと一致する Cookie 変更があった場合に発生します。 - {{domxref("ServiceWorkerGlobalScope/fetch_event", "fetch")}} - - : {{domxref("fetch()")}} が呼び出されたときに発生します。 + - : {{domxref("WorkerGlobalScope/fetch", "fetch()")}} が呼び出されたときに発生します。 - {{domxref("ServiceWorkerGlobalScope/install_event", "install")}} - : {{domxref("ServiceWorkerRegistration")}} が新しい {{domxref("ServiceWorkerRegistration.installing")}} ワーカーを得た時に発生します。 - {{domxref("ServiceWorkerGlobalScope/message_event", "message")}} - - : メッセージを受信したときに発生します。制御中のページは {{domxref("MessagePort.postMessage()")}} メソッドを使用してサービスワーカーにメッセージを送信することができます。サービスワーカーは任意で [`event.data.port`](https://html.spec.whatwg.org/multipage/comms.html#messageport) で公開されている {{domxref("MessagePort")}} を通じて、対応する制御中のページに返信することができます。 + - : メッセージを受信したときに発生します。制御中のページは {{domxref("MessagePort.postMessage()")}} メソッドを使用してサービスワーカーにメッセージを送信することができます。 +- {{domxref("ServiceWorkerGlobalScope/messageerror_event", "messageerror")}} + - : 受信メッセージがデシリアライズできなかった場合に発生します。 - {{domxref("ServiceWorkerGlobalScope/notificationclick_event", "notificationclick")}} - : 表示された通知をユーザーがクリックしたときに発生します。 - {{domxref("ServiceWorkerGlobalScope/notificationclose_event", "notificationclose")}} - : 表示された通知をユーザーが閉じたときに発生します。 -- {{domxref("ServiceWorkerGlobalScope.paymentrequest_event", "paymentrequest")}} {{Experimental_Inline}} - - : 販売者のウェブサイトで {{domxref("PaymentRequest.show()")}} メソッドを介して支払いフローが開始されたときに、支払いアプリで発行されます。 +- {{domxref("ServiceWorkerGlobalScope/paymentrequest_event", "paymentrequest")}} {{Experimental_Inline}} + - : 販売者のウェブサイトで {{domxref("PaymentRequest.show()")}} メソッドを介して支払いフローが開始されたときに、支払いアプリで発生します。 - {{domxref("ServiceWorkerGlobalScope/sync_event", "sync")}} - : サービスワーカーのクライアントページから {{domxref("SyncManager.register")}} への呼び出しが行われたときに発生します。ネットワークが有効であるか、すぐに利用可能になるのであれば、直ちに同期が試みられます。 - {{domxref("ServiceWorkerGlobalScope/periodicsync_event", "periodicsync")}} {{Experimental_Inline}} @@ -57,21 +85,11 @@ l10n: - {{domxref("ServiceWorkerGlobalScope/pushsubscriptionchange_event", "pushsubscriptionchange")}} - : プッシュ通知への加入が無効化されたとき、または無効化されようとするとき (例えば、プッシュ通知の有効期限が設定されたとき) に発生します。 -## インスタンスメソッド - -- {{domxref("ServiceWorkerGlobalScope.skipWaiting()")}} - - : 現在のサービスワーカーの登録を、待ち状態からクライアントが使っている時のアクティブ状態に進めます。 - -`ServiceWorkerGlobalScope` は {{domxref("WorkerGlobalScope")}} を実装しています。このため利用できる以下のプロパティもあります。 - -- {{domxref("fetch()")}} - - : リソース取得 (fetch) のプロセスを開始します。これはリクエストのレスポンスを表す {{domxref("Response")}} オブジェクトを解決するプロミスを返します。このアルゴリズムはサービスワーカーコンテキストに渡されるフェッチ処理のエントリーポイントです。 - ## 例 このコードスニペットは、[service worker prefetch の例](https://github.com/GoogleChrome/samples/blob/gh-pages/service-worker/prefetch/service-worker.js)([prefetch の例のライブ版](https://googlechrome.github.io/samples/service-worker/prefetch/)を参照してください)からのものです。 {{domxref("ServiceWorkerGlobalScope.fetch_event", "onfetch")}} イベントハンドラーは `fetch` イベントを監視します。イベントが発生した時、コードは {{domxref("Cache")}} オブジェクト内で、最初に一致したリクエストに対して解決するプロミスを返します。もし、何も一致しなかった場合は、コードはネットワークからレスポンスを読み取ります。 -さらに、このコードは {{domxref("fetch()")}} 操作で発生した例外を処理しています。 HTTP のエラーレスポンス(たとえば、404)は、例外を引き起こさないことに注意してください。適切なエラーコードセットを持った通常のレスポンスオブジェクトを返します。 +さらに、このコードは {{domxref("WorkerGlobalScope/fetch", "fetch()")}} 操作で発生した例外を処理しています。 HTTP のエラーレスポンス(たとえば、404)は、例外を引き起こさないことに注意してください。適切なエラーコードセットを持った通常のレスポンスオブジェクトを返します。 ```js self.addEventListener("fetch", (event) => { @@ -115,5 +133,3 @@ self.addEventListener("fetch", (event) => { - [サービスワーカーの使用](/ja/docs/Web/API/Service_Worker_API/Using_Service_Workers) - [サービスワーカーの基本的なコード例](https://github.com/mdn/dom-examples/tree/main/service-worker/simple-service-worker) -- [Is ServiceWorker ready?](https://jakearchibald.github.io/isserviceworkerready/) -- {{jsxref("Promise")}} From bec54a34db203fbea0a743271910c7752f8382d3 Mon Sep 17 00:00:00 2001 From: Masahiro FUJIMOTO Date: Thu, 15 Aug 2024 17:58:15 +0900 Subject: [PATCH 005/144] =?UTF-8?q?2024/07/30=20=E6=99=82=E7=82=B9?= =?UTF-8?q?=E3=81=AE=E8=8B=B1=E8=AA=9E=E7=89=88=E3=81=AB=E5=9F=BA=E3=81=A5?= =?UTF-8?q?=E3=81=8D=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../deprecated_and_obsolete_features/index.md | 94 +++++++++++++------ 1 file changed, 64 insertions(+), 30 deletions(-) diff --git a/files/ja/web/javascript/reference/deprecated_and_obsolete_features/index.md b/files/ja/web/javascript/reference/deprecated_and_obsolete_features/index.md index 1db3a7a98aa0ec..1c3065f098bc88 100644 --- a/files/ja/web/javascript/reference/deprecated_and_obsolete_features/index.md +++ b/files/ja/web/javascript/reference/deprecated_and_obsolete_features/index.md @@ -2,20 +2,22 @@ title: 非推奨の機能、廃止された機能 slug: Web/JavaScript/Reference/Deprecated_and_obsolete_features l10n: - sourceCommit: b1171164863d3bb868de64ffc8ddec508599ed57 + sourceCommit: 758299969f63c13d235212f1adff79a649702adf --- -{{JsSidebar("More")}} +{{jsSidebar("More")}} このページのリストは JavaScript で廃止予定(まだ使用できるが削除する予定)とされた、あるいは既に廃止され使用不可となった機能の一覧です。 ## 非推奨の機能 -これらの非推奨機能はまだ使用可能かもしれません。しかし将来的には完全に削除されるでしょう。既にコード内でこれらを使用している場合は、代替となるコードに置き換えておく必要があります。 +これらの非推奨の機能は現在でも使用することができますが、すべての JavaScript エンジンで実装されているとは限らないため、注意して使用する必要があります。 コードからこれらの使用を除去するよう作業を行うべきです。 -これらの非推奨機能のいくつかは、 ECMAScript 仕様書の[付録 B](https://tc39.es/ecma262/#sec-additional-ecmascript-features-for-web-browsers) の章に掲載されています。この章は規範的なオプションとして記述されています。つまり、ウェブブラウザーのホストはこれらの機能を実装しなければなりませんが、ウェブ以外のホストは実装しなくても構いません。これらの機能を削除すると後方互換性の問題が発生し、旧形式のウェブサイトが壊れてしまうので、おそらく安定しているのでしょう。(JavaScript で「ウェブを壊すな」という設計目標があります。)それでも、これらはクロスプラットフォームで互換性がなく、すべての解析ツールで対応していないかもしれないので、付録 B の序文にあるように、使用しないことが推奨されます。 +これらの非推奨機能のいくつかは、 ECMAScript 仕様書の[付録 B](https://tc39.es/ecma262/multipage/additional-ecmascript-features-for-web-browsers.html) の章に掲載されています。この章は規範的なオプションとして記述されています。つまり、ウェブブラウザーのホストはこれらの機能を実装しなければなりませんが、ウェブ以外のホストは実装しなくても構いません。これらの機能を削除すると後方互換性の問題が発生し、旧形式のウェブサイトが壊れてしまうので、おそらく安定しているのでしょう。(JavaScript で「ウェブを壊すな」という設計目標があります。)それでも、これらはクロスプラットフォームで互換性がなく、すべての解析ツールで対応していないかもしれないので、付録 B の序文にあるように、使用しないことが推奨されます。 -> ... プログラマーは新しい ECMAScript コードを書くときに、これらの機能や振る舞いを使用したり、その存在を想定したりしてはいけません。... +> … この付録で指定された言語機能および動作にはすべて、1つまたは複数の望ましくない特性があり、古い使用方法がなくなれば、この仕様から除去されることになります。… +> +> …プログラマーは新しい ECMAScript コードを書くときに、これらの機能や振る舞いを使用したり、その存在を想定したりしてはいけません。… 他にも、仕様書本体にあるとはいえ、規範的なオプションとしてマークされているものもあり、依存してはいけません。 @@ -39,28 +41,37 @@ console.log("b"); 以下のプロパティは非推奨です。これらは[置換文字列](/ja/docs/Web/JavaScript/Reference/Global_Objects/String/replace)で使用しても効果がありません。 -| プロパティ | 説明 | -| ------------------------------------------------- | ---------------------------------------------------- | -| {{jsxref("RegExp/n", "$1-$9")}} | もしあれば、括弧で囲まれた部分文字列に一致します。 | -| {{jsxref("RegExp.input", "$_")}} | `input` を参照。 | -| {{jsxref("RegExp.lastMatch", "$&")}} | `lastMatch` を参照。 | -| {{jsxref("RegExp.lastParen", "$+")}} | `lastParen` を参照。 | -| {{jsxref("RegExp.leftContext", "$`")}} | `leftContext` を参照。 | -| {{jsxref("RegExp.rightContext", "$'")}} | `rightContext` を参照。 | -| {{jsxref("RegExp.input", "input")}} | 正規表現が一致する対象となる文字列。 | -| {{jsxref("RegExp.lastMatch", "lastMatch")}} | 最後に一致した文字。 | -| {{jsxref("RegExp.lastParen", "lastParen")}} | (もしあれば)最後に括弧で囲まれた部分文字列の一致。 | -| {{jsxref("RegExp.leftContext", "leftContext")}} | 一番最近の一致に先行する部分文字列。 | -| {{jsxref("RegExp.rightContext", "rightContext")}} | 一番最近の一致の後に続く部分文字列。 | +- [`$1–$9`](/ja/docs/Web/JavaScript/Reference/Global_Objects/RegExp/n) + - : もしあれば、一致した括弧で囲まれた部分文字列です。 +- [`input`, `$_`](/ja/docs/Web/JavaScript/Reference/Global_Objects/RegExp/input) + - : 正規表現を照合する文字列です。 +- [`lastMatch`, `$&`](/ja/docs/Web/JavaScript/Reference/Global_Objects/RegExp/lastMatch) + - : 最後に一致した部分文字列です。 +- [`lastParen`, `$+`](/ja/docs/Web/JavaScript/Reference/Global_Objects/RegExp/lastParen) + - : もしあれば、一致した括弧で囲まれた最後の部分文字列です。 +- [`leftContext`, `` $` ``](/ja/docs/Web/JavaScript/Reference/Global_Objects/RegExp/leftContext) + - : 直近に一致した部分文字列の直前の部分文字列です。 +- [`rightContext`, `$'`](/ja/docs/Web/JavaScript/Reference/Global_Objects/RegExp/rightContext) + - : 直近に一致した部分文字列の直後の部分文字列です。 > [!WARNING] > これらの静的プロパティは、[外部コードと対話する際の問題](https://github.com/tc39/proposal-regexp-legacy-features/blob/master/subclass-restriction-motivation.md#legacy-static-properties-regexp1-etc)を発生させる可能性があるため、使用しないようにしましょう。 {{jsxref("RegExp/compile", "compile()")}} メソッドは非推奨です。代わりに新しい `RegExp` のインスタンスを構築してください。 +以下の正規表現の構文は非推奨であり、[Unicode 非対応モード](/ja/docs/Web/JavaScript/Reference/Global_Objects/RegExp/unicode#unicode-aware_mode)でのみ利用できます。Unicode 対応モードでは、これらはすべて構文エラーとなります。 + +- [先読みアサーション](/ja/docs/Web/JavaScript/Reference/Regular_expressions/Lookahead_assertion)に[数量詞](/ja/docs/Web/JavaScript/Reference/Regular_expressions/Quantifier)をつけること。 +- 既存のキャプチャグループを参照しない[後方参照](/ja/docs/Web/JavaScript/Reference/Regular_expressions/Backreference)は、[古い 8 進数エスケープ](#エスケープシーケンス)となります。 +- [文字クラス](/ja/docs/Web/JavaScript/Reference/Regular_expressions/Character_class)において、一方の境界が文字クラスである文字の範囲を表す `-` 文字はリテラル文字になります。 +- 認識されないエスケープシーケンスは[「同一エスケープ」](/ja/docs/Web/JavaScript/Reference/Regular_expressions/Character_escape)として扱われます。 +- [文字クラス](/ja/docs/Web/JavaScript/Reference/Regular_expressions/Character_class)内で、`\cX` (`X` は数字または `_` )の形で形成されたエスケープシーケンスは、{{Glossary("ASCII")}} 文字の場合と同じ方法でデコードされます。`\c0` はモジュロ 32 を取ると `\cP` と同じです。加えて、`\cX` という形がどこかで検出され、`X` が認識された文字のいずれでもない場合、バックスラッシュはリテラル文字として扱われます。 +- `\k` シーケンスが[名前付きキャプチャグループ](/ja/docs/Web/JavaScript/Reference/Regular_expressions/Named_capturing_group)がない正規表現内に現れた場合、同一エスケープとして扱われます。 +- 構文文字である `]`、`{`、`}` が、文字クラスまたは量指定子の区切り文字の終わりとして解釈できない場合、エスケープせずに[そのまま](/ja/docs/Web/JavaScript/Reference/Regular_expressions/Literal_character)現れることがあります。 + ### Function -- 関数の {{jsxref("Global_Objects/Function/caller", "caller")}} プロパティと [`arguments.callee`](/ja/docs/Web/JavaScript/Reference/Functions/arguments/callee) プロパティは非推奨で、厳格モードでは使用できません。 +- 関数の {{jsxref("Function/caller", "caller")}} プロパティと [`arguments.callee`](/ja/docs/Web/JavaScript/Reference/Functions/arguments/callee) プロパティは非推奨で、厳格モードでは使用できません。 - 関数のプロパティとして `arguments` にアクセスする代わりに、関数クロージャの内部で {{jsxref("Functions/arguments", "arguments")}} オブジェクトを使用してください。 ### Object @@ -76,19 +87,42 @@ console.log("b"); ### Date -- {{jsxref("Global_Objects/Date/getYear", "getYear()")}} と {{jsxref("Global_Objects/Date/setYear", "setYear()")}} は「2000年問題」の影響を受けます。代替策として、{{jsxref("Global_Objects/Date/getFullYear", "getFullYear")}} および {{jsxref("Global_Objects/Date/setFullYear", "setFullYear")}} の使用が推奨されます。 -- {{jsxref("Global_Objects/Date/toGMTString", "toGMTString()")}} メソッドは非推奨です。代わりに {{jsxref("Global_Objects/Date/toUTCString", "toUTCString()")}} を使用してください。 +- {{jsxref("Date/getYear", "getYear()")}} と {{jsxref("Date/setYear", "setYear()")}} は「2000年問題」の影響を受けます。代替策として、{{jsxref("Date/getFullYear", "getFullYear")}} および {{jsxref("Date/setFullYear", "setFullYear")}} の使用が推奨されます。 +- `toGMTString()` メソッドは非推奨です。代わりに {{jsxref("Date/toUTCString", "toUTCString()")}} を使用してください。 ### エスケープシーケンス - 文字列内と正規表現リテラル内での、8 進表記のエスケープシーケンス (\ に続く、1 つ、2 つ、もしくは、3 つの 8 進表現の数字) は非推奨です。 -- {{jsxref("Global_Objects/escape", "escape")}} と {{jsxref("Global_Objects/unescape", "unescape")}} 関数は非推奨です。特殊文字のためのエスケープシーケンスをエンコードかデコードするためには、{{jsxref("Global_Objects/encodeURI", "encodeURI")}}、{{jsxref("Global_Objects/encodeURIComponent", "encodeURIComponent")}}、{{jsxref("Global_Objects/decodeURI", "decodeURI")}}、{{jsxref("Global_Objects/decodeURIComponent", "decodeURIComponent")}} を使用してください。 +- {{jsxref("escape()")}} と {{jsxref("unescape()")}} 関数は非推奨です。特殊文字のためのエスケープシーケンスをエンコードかデコードするためには、{{jsxref("encodeURI()")}}、{{jsxref("encodeURIComponent()")}}、{{jsxref("decodeURI()")}}、{{jsxref("decodeURIComponent()")}} を使用してください。 ### 文 [`with`](/ja/docs/Web/JavaScript/Reference/Statements/with) 文は非推奨であり、厳格モードでは利用できません。 -[`for...in`](/ja/docs/Web/JavaScript/Reference/Statements/for...in) ループヘッダーの `var` 宣言での初期化子は非推奨であり、厳格モードでは[構文エラー](/ja/docs/Web/JavaScript/Reference/Errors/Invalid_for-in_initializer)になります。厳格モードでない場合は、黙って無視されます。 +[`for...in`](/ja/docs/Web/JavaScript/Reference/Statements/for...in) ループヘッダーの `var` 宣言での初期化子は非推奨であり、厳格モードでは[構文エラー](/ja/docs/Web/JavaScript/Reference/Errors/Invalid_for-in_initializer)になります。初期化子の式が評価され、変数に割り当てられますが、ループの最初の反復処理で値がすぐに再割り当てされます。 + +通常、[`try...catch`](/ja/docs/Web/JavaScript/Reference/Statements/try...catch) 文の `catch` ブロックには、`catch()` でバインドされた変数と同じ名前の変数宣言を置くことはできません。拡張文法では、`catch` ブロックに `catch` でバインドされた識別子と同じ名前の宣言済み変数 [`var`](/ja/docs/Web/JavaScript/Reference/Statements/var) を置くことができます。ただし、`catch` のバインドが単純な識別子であり、[分割代入](/ja/docs/Web/JavaScript/Reference/Operators/Destructuring_assignment) ではない場合に限ります。ただし、この変数の初期化と割り当ては、上位のスコープ変数ではなく、`catch` にバインドされた識別子に対してのみ作用します。このため、動作がわかりにくい場合があります。 + +```js +var a = 2; +try { + throw 42; +} catch (a) { + var a = 1; // この 1 は、外側の `a` ではなく、捕捉された `a` に代入される +} +console.log(a); // 2 + +try { + throw 42; + // メモ: 内部で宣言されている `a` との重複を避けるため、 + // `err` に変更してみる +} catch (err) { + var a = 1; // この 1 は、上位スコープの `a` に代入される +} +console.log(a); // 1 +``` + +これは仕様の付録Bに掲載されているため、どこでも実装されているとは限りません。 `catch` ブロックで宣言された変数と、`catch` バインドされた識別子との間で名前の競合が生じないようにしてください。 ## 廃止された機能 @@ -139,7 +173,7 @@ console.log("b"); ### Date -- `Date.prototype.toLocaleFormat()` は廃止されました。代わりに [`toLocaleString`](/ja/docs/Web/JavaScript/Reference/Global_Objects/Date/toLocaleString) または [`Intl.DateTimeFormat`](/ja/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat) を使用してください。 +- C 言語の `strftime()` 関数で期待されるのと同じ形式の書式文字列を使用する `Date.prototype.toLocaleFormat()` は廃止されました。代わりに [`toLocaleString()`](/ja/docs/Web/JavaScript/Reference/Global_Objects/Date/toLocaleString) または [`Intl.DateTimeFormat`](/ja/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat) を使用してください。 ### Array @@ -158,10 +192,10 @@ console.log("b"); - `Proxy.create` および `Proxy.createFunction` は非推奨です。代わりに {{jsxref("Proxy/Proxy", "Proxy()")}} コンストラクターを使用してください。 - 以下のトラップは廃止されました。 - - `hasOwn` ([バグ 980565](https://bugzilla.mozilla.org/show_bug.cgi?id=980565), Firefox 33) - - `getEnumerablePropertyKeys` ([バグ 783829](https://bugzilla.mozilla.org/show_bug.cgi?id=783829), Firefox 37) - - `getOwnPropertyNames` ([バグ 1007334](https://bugzilla.mozilla.org/show_bug.cgi?id=1007334), Firefox 33) - - `keys` ([バグ 1007334](https://bugzilla.mozilla.org/show_bug.cgi?id=1007334), Firefox 33) + - `hasOwn` ([バグ 980565](https://bugzil.la/980565), Firefox 33) + - `getEnumerablePropertyKeys` ([バグ 783829](https://bugzil.la/783829), Firefox 37) + - `getOwnPropertyNames` ([バグ 1007334](https://bugzil.la/1007334), Firefox 33) + - `keys` ([バグ 1007334](https://bugzil.la/1007334), Firefox 33) ### ParallelArray @@ -171,7 +205,7 @@ console.log("b"); - `for each...in` は廃止されました。代わりに {{jsxref("Statements/for...of", "for...of")}} を使用してください。 - let ブロックと let 式は廃止されました。 -- [式クロージャ](/ja/docs/Web/JavaScript/Reference/Errors/Deprecated_expression_closures)は廃止されました。代わりに通常の{{jsxref("Operators/function", "関数", "", 1)}}または{{jsxref("Functions/Arrow_functions", "アロー関数", "", 1)}}を使用してください。 +- 式クロージャ(`function () 1` を `function () { return 1; }` の短縮形として使うこと)は廃止されました。代わりに通常の{{jsxref("Operators/function", "関数", "", 1)}}または{{jsxref("Functions/Arrow_functions", "アロー関数", "", 1)}}を使用してください。 ### ソーステキストの取得 @@ -183,7 +217,7 @@ console.log("b"); 配列内包とジェネレーター内包が削除されました。 -``` +```js-nolint // 古い配列内包 [for (x of iterable) x] [for (x of iterable) if (condition) x] From 1c695f076f3ee1427b59f1e0f759398db2e920fa Mon Sep 17 00:00:00 2001 From: mdn-bot <108879845+mdn-bot@users.noreply.github.com> Date: Mon, 19 Aug 2024 01:30:00 +0000 Subject: [PATCH 006/144] ja: sync translated content --- files/ja/_redirects.txt | 18 +++++------ files/ja/_wikihistory.json | 30 +++++++++---------- .../api/console/countreset_static/index.md | 2 +- .../console/groupcollapsed_static/index.md | 2 +- .../web/api/console/groupend_static/index.md | 2 +- .../api/console/profileend_static/index.md | 2 +- .../web/api/console/timeend_static/index.md | 2 +- .../web/api/console/timelog_static/index.md | 2 +- .../web/api/console/timestamp_static/index.md | 2 +- .../web/api/cssimportrule/stylesheet/index.md | 3 +- .../api/csspropertyrule/initialvalue/index.md | 3 +- .../idbtransaction/objectstorenames/index.md | 2 +- files/ja/web/api/usbdevice/productid/index.md | 2 +- files/ja/web/api/usbdevice/vendorid/index.md | 2 +- 14 files changed, 36 insertions(+), 38 deletions(-) diff --git a/files/ja/_redirects.txt b/files/ja/_redirects.txt index ec72dd7269a10a..7ebb1cd0827a97 100644 --- a/files/ja/_redirects.txt +++ b/files/ja/_redirects.txt @@ -700,7 +700,7 @@ /ja/docs/DOM/console.dir /ja/docs/Web/API/console/dir_static /ja/docs/DOM/console.log /ja/docs/Web/API/console/log_static /ja/docs/DOM/console.time /ja/docs/Web/API/console/time_static -/ja/docs/DOM/console.timeEnd /ja/docs/Web/API/console/timeend_static +/ja/docs/DOM/console.timeEnd /ja/docs/Web/API/console/timeEnd_static /ja/docs/DOM/dispatchEvent_example /ja/docs/Web/Events/Creating_and_triggering_events /ja/docs/DOM/document /ja/docs/Web/API/Document /ja/docs/DOM/document.URL /ja/docs/Web/API/Document/URL @@ -2657,7 +2657,7 @@ /ja/docs/Web/API/Console/error /ja/docs/Web/API/console/error_static /ja/docs/Web/API/Console/log /ja/docs/Web/API/console/log_static /ja/docs/Web/API/Console/time /ja/docs/Web/API/console/time_static -/ja/docs/Web/API/Console/timeEnd /ja/docs/Web/API/console/timeend_static +/ja/docs/Web/API/Console/timeEnd /ja/docs/Web/API/console/timeEnd_static /ja/docs/Web/API/Constraint_validation /ja/docs/Learn/Forms/Form_validation /ja/docs/Web/API/Coordinates /ja/docs/Web/API/GeolocationCoordinates /ja/docs/Web/API/DOMPoint/fromPoint /ja/docs/Web/API/DOMPoint/fromPoint_static @@ -3257,22 +3257,22 @@ /ja/docs/Web/API/console.dir /ja/docs/Web/API/console/dir_static /ja/docs/Web/API/console.log /ja/docs/Web/API/console/log_static /ja/docs/Web/API/console.time /ja/docs/Web/API/console/time_static -/ja/docs/Web/API/console.timeEnd /ja/docs/Web/API/console/timeend_static +/ja/docs/Web/API/console.timeEnd /ja/docs/Web/API/console/timeEnd_static /ja/docs/Web/API/console/assert /ja/docs/Web/API/console/assert_static /ja/docs/Web/API/console/clear /ja/docs/Web/API/console/clear_static /ja/docs/Web/API/console/count /ja/docs/Web/API/console/count_static -/ja/docs/Web/API/console/countReset /ja/docs/Web/API/console/countreset_static +/ja/docs/Web/API/console/countReset /ja/docs/Web/API/console/countReset_static /ja/docs/Web/API/console/debug /ja/docs/Web/API/console/debug_static /ja/docs/Web/API/console/dirxml /ja/docs/Web/API/console/dirxml_static /ja/docs/Web/API/console/group /ja/docs/Web/API/console/group_static -/ja/docs/Web/API/console/groupCollapsed /ja/docs/Web/API/console/groupcollapsed_static -/ja/docs/Web/API/console/groupEnd /ja/docs/Web/API/console/groupend_static +/ja/docs/Web/API/console/groupCollapsed /ja/docs/Web/API/console/groupCollapsed_static +/ja/docs/Web/API/console/groupEnd /ja/docs/Web/API/console/groupEnd_static /ja/docs/Web/API/console/info /ja/docs/Web/API/console/info_static /ja/docs/Web/API/console/profile /ja/docs/Web/API/console/profile_static -/ja/docs/Web/API/console/profileEnd /ja/docs/Web/API/console/profileend_static +/ja/docs/Web/API/console/profileEnd /ja/docs/Web/API/console/profileEnd_static /ja/docs/Web/API/console/table /ja/docs/Web/API/console/table_static -/ja/docs/Web/API/console/timeLog /ja/docs/Web/API/console/timelog_static -/ja/docs/Web/API/console/timeStamp /ja/docs/Web/API/console/timestamp_static +/ja/docs/Web/API/console/timeLog /ja/docs/Web/API/console/timeLog_static +/ja/docs/Web/API/console/timeStamp /ja/docs/Web/API/console/timeStamp_static /ja/docs/Web/API/console/trace /ja/docs/Web/API/console/trace_static /ja/docs/Web/API/console/warn /ja/docs/Web/API/console/warn_static /ja/docs/Web/API/crypto_property /ja/docs/Web/API/Window/crypto diff --git a/files/ja/_wikihistory.json b/files/ja/_wikihistory.json index e0c5f379618327..8d7cd239a4f451 100644 --- a/files/ja/_wikihistory.json +++ b/files/ja/_wikihistory.json @@ -15115,14 +15115,14 @@ "modified": "2020-11-27T13:49:44.683Z", "contributors": ["yumetodo", "853419196", "yyss"] }, + "Web/API/console/countReset_static": { + "modified": "2020-11-27T14:37:31.289Z", + "contributors": ["yumetodo"] + }, "Web/API/console/count_static": { "modified": "2020-11-27T14:24:35.469Z", "contributors": ["yumetodo", "yyss"] }, - "Web/API/console/countreset_static": { - "modified": "2020-11-27T14:37:31.289Z", - "contributors": ["yumetodo"] - }, "Web/API/console/debug_static": { "modified": "2020-11-27T14:40:02.073Z", "contributors": ["yumetodo", "silverskyvicto"] @@ -15131,35 +15131,35 @@ "modified": "2019-03-23T22:34:53.031Z", "contributors": ["yyss"] }, - "Web/API/console/group_static": { - "modified": "2020-10-15T21:45:35.788Z", - "contributors": ["munieru_jp", "dskmori", "yyss"] - }, - "Web/API/console/groupcollapsed_static": { + "Web/API/console/groupCollapsed_static": { "modified": "2019-03-23T22:34:55.714Z", "contributors": ["yyss"] }, - "Web/API/console/groupend_static": { + "Web/API/console/groupEnd_static": { "modified": "2019-03-23T22:34:56.119Z", "contributors": ["yyss"] }, + "Web/API/console/group_static": { + "modified": "2020-10-15T21:45:35.788Z", + "contributors": ["munieru_jp", "dskmori", "yyss"] + }, "Web/API/console/info_static": { "modified": "2020-10-15T21:45:37.023Z", "contributors": ["u_7cc", "yyss"] }, - "Web/API/console/profile_static": { - "modified": "2019-03-23T22:34:55.973Z", + "Web/API/console/profileEnd_static": { + "modified": "2019-03-23T22:34:42.618Z", "contributors": ["yyss"] }, - "Web/API/console/profileend_static": { - "modified": "2019-03-23T22:34:42.618Z", + "Web/API/console/profile_static": { + "modified": "2019-03-23T22:34:55.973Z", "contributors": ["yyss"] }, "Web/API/console/table_static": { "modified": "2019-03-23T22:34:44.337Z", "contributors": ["yyss"] }, - "Web/API/console/timestamp_static": { + "Web/API/console/timeStamp_static": { "modified": "2019-03-23T22:34:51.368Z", "contributors": ["yyss"] }, diff --git a/files/ja/web/api/console/countreset_static/index.md b/files/ja/web/api/console/countreset_static/index.md index 783722b2624f31..a9032a34623e26 100644 --- a/files/ja/web/api/console/countreset_static/index.md +++ b/files/ja/web/api/console/countreset_static/index.md @@ -1,6 +1,6 @@ --- title: console.countReset() -slug: Web/API/console/countreset_static +slug: Web/API/console/countReset_static --- {{APIRef("Console API")}} diff --git a/files/ja/web/api/console/groupcollapsed_static/index.md b/files/ja/web/api/console/groupcollapsed_static/index.md index 2bc6be887d6c49..2359bf5f3546ad 100644 --- a/files/ja/web/api/console/groupcollapsed_static/index.md +++ b/files/ja/web/api/console/groupcollapsed_static/index.md @@ -1,6 +1,6 @@ --- title: console.groupCollapsed() -slug: Web/API/console/groupcollapsed_static +slug: Web/API/console/groupCollapsed_static --- {{APIRef("Console API")}} diff --git a/files/ja/web/api/console/groupend_static/index.md b/files/ja/web/api/console/groupend_static/index.md index 8030c218debbf7..d03e8f9902e061 100644 --- a/files/ja/web/api/console/groupend_static/index.md +++ b/files/ja/web/api/console/groupend_static/index.md @@ -1,6 +1,6 @@ --- title: console.groupEnd() -slug: Web/API/console/groupend_static +slug: Web/API/console/groupEnd_static --- {{APIRef("Console API")}} diff --git a/files/ja/web/api/console/profileend_static/index.md b/files/ja/web/api/console/profileend_static/index.md index 2382be02c84599..5e131633124914 100644 --- a/files/ja/web/api/console/profileend_static/index.md +++ b/files/ja/web/api/console/profileend_static/index.md @@ -1,6 +1,6 @@ --- title: console.profileEnd() -slug: Web/API/console/profileend_static +slug: Web/API/console/profileEnd_static --- {{APIRef("Console API")}}{{Non-standard_header}} diff --git a/files/ja/web/api/console/timeend_static/index.md b/files/ja/web/api/console/timeend_static/index.md index 535e0a82e0865b..fe92b0446ccf48 100644 --- a/files/ja/web/api/console/timeend_static/index.md +++ b/files/ja/web/api/console/timeend_static/index.md @@ -1,6 +1,6 @@ --- title: console.timeEnd() -slug: Web/API/console/timeend_static +slug: Web/API/console/timeEnd_static --- {{APIRef("Console API")}} diff --git a/files/ja/web/api/console/timelog_static/index.md b/files/ja/web/api/console/timelog_static/index.md index 0285799f2aae0f..3238d4c632da3f 100644 --- a/files/ja/web/api/console/timelog_static/index.md +++ b/files/ja/web/api/console/timelog_static/index.md @@ -1,6 +1,6 @@ --- title: console.timeLog() -slug: Web/API/console/timelog_static +slug: Web/API/console/timeLog_static --- {{APIRef("Console API")}} diff --git a/files/ja/web/api/console/timestamp_static/index.md b/files/ja/web/api/console/timestamp_static/index.md index 98acf3ba697d0e..f70761ae29a13e 100644 --- a/files/ja/web/api/console/timestamp_static/index.md +++ b/files/ja/web/api/console/timestamp_static/index.md @@ -1,6 +1,6 @@ --- title: console.timeStamp() -slug: Web/API/console/timestamp_static +slug: Web/API/console/timeStamp_static --- {{APIRef("Console API")}}{{Non-standard_header}} diff --git a/files/ja/web/api/cssimportrule/stylesheet/index.md b/files/ja/web/api/cssimportrule/stylesheet/index.md index f17bfd85a553d3..1ce28b43d14731 100644 --- a/files/ja/web/api/cssimportrule/stylesheet/index.md +++ b/files/ja/web/api/cssimportrule/stylesheet/index.md @@ -1,7 +1,6 @@ --- title: "CSSImportRule: stylesheet プロパティ" -short-title: stylesheet -slug: Web/API/CSSImportRule/stylesheet +slug: Web/API/CSSImportRule/styleSheet l10n: sourceCommit: d76defab4ca13261e9de81ae1df125345f847b0a --- diff --git a/files/ja/web/api/csspropertyrule/initialvalue/index.md b/files/ja/web/api/csspropertyrule/initialvalue/index.md index ad8e96fe461997..3260bca89ddc8f 100644 --- a/files/ja/web/api/csspropertyrule/initialvalue/index.md +++ b/files/ja/web/api/csspropertyrule/initialvalue/index.md @@ -1,7 +1,6 @@ --- title: "CSSPropertyRule: initialValue プロパティ" -short-title: initialValue -slug: Web/API/CSSPropertyRule/initialvalue +slug: Web/API/CSSPropertyRule/initialValue l10n: sourceCommit: d76defab4ca13261e9de81ae1df125345f847b0a --- diff --git a/files/ja/web/api/idbtransaction/objectstorenames/index.md b/files/ja/web/api/idbtransaction/objectstorenames/index.md index ea76f30ed75433..778bd781ba9e38 100644 --- a/files/ja/web/api/idbtransaction/objectstorenames/index.md +++ b/files/ja/web/api/idbtransaction/objectstorenames/index.md @@ -1,6 +1,6 @@ --- title: "IDBTransaction: objectStoreNames プロパティ" -slug: Web/API/IDBTransaction/ObjectStoreNames +slug: Web/API/IDBTransaction/objectStoreNames l10n: sourceCommit: eab4066e72d5478de920e4020e5db71214dcffa6 --- diff --git a/files/ja/web/api/usbdevice/productid/index.md b/files/ja/web/api/usbdevice/productid/index.md index bfb40e95b82a6e..7267a665547557 100644 --- a/files/ja/web/api/usbdevice/productid/index.md +++ b/files/ja/web/api/usbdevice/productid/index.md @@ -1,6 +1,6 @@ --- title: "USBDevice: productId プロパティ" -slug: Web/API/USBDevice/productID +slug: Web/API/USBDevice/productId l10n: sourceCommit: 0c8a320b035cf625c1df67713a94ead2e7f3aec6 --- diff --git a/files/ja/web/api/usbdevice/vendorid/index.md b/files/ja/web/api/usbdevice/vendorid/index.md index e09e6560eeb9a7..982f84e4c760dc 100644 --- a/files/ja/web/api/usbdevice/vendorid/index.md +++ b/files/ja/web/api/usbdevice/vendorid/index.md @@ -1,6 +1,6 @@ --- title: "USBDevice: vendorId プロパティ" -slug: Web/API/USBDevice/vendorID +slug: Web/API/USBDevice/vendorId l10n: sourceCommit: 0c8a320b035cf625c1df67713a94ead2e7f3aec6 --- From 87869c1cb702c15345dbcbd8a7dfd4ac89ef5389 Mon Sep 17 00:00:00 2001 From: MDN Web Docs GitHub Bot <108879845+mdn-bot@users.noreply.github.com> Date: Mon, 19 Aug 2024 17:36:18 +0200 Subject: [PATCH 007/144] [es] sync translated content (#23144) es: sync translated content --- files/es/_redirects.txt | 2 +- files/es/_wikihistory.json | 8 ++++---- files/es/web/api/console/timeend_static/index.md | 2 +- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/files/es/_redirects.txt b/files/es/_redirects.txt index 437cf9dce1b2e7..aeb3d8d7780cdc 100644 --- a/files/es/_redirects.txt +++ b/files/es/_redirects.txt @@ -1763,7 +1763,7 @@ /es/docs/Web/API/console/log /es/docs/Web/API/console/log_static /es/docs/Web/API/console/table /es/docs/Web/API/console/table_static /es/docs/Web/API/console/time /es/docs/Web/API/console/time_static -/es/docs/Web/API/console/timeEnd /es/docs/Web/API/console/timeend_static +/es/docs/Web/API/console/timeEnd /es/docs/Web/API/console/timeEnd_static /es/docs/Web/API/console/trace /es/docs/Web/API/console/trace_static /es/docs/Web/API/console/warn /es/docs/Web/API/console/warn_static /es/docs/Web/API/crypto_property /es/docs/Web/API/Window/crypto diff --git a/files/es/_wikihistory.json b/files/es/_wikihistory.json index 579c9131e47322..68fbf350010711 100644 --- a/files/es/_wikihistory.json +++ b/files/es/_wikihistory.json @@ -5755,14 +5755,14 @@ "modified": "2019-03-23T22:20:30.589Z", "contributors": ["AlePerez92"] }, + "Web/API/console/timeEnd_static": { + "modified": "2020-10-15T22:13:11.825Z", + "contributors": ["xlhector10"] + }, "Web/API/console/time_static": { "modified": "2019-03-18T21:42:22.745Z", "contributors": ["jotaoncode"] }, - "Web/API/console/timeend_static": { - "modified": "2020-10-15T22:13:11.825Z", - "contributors": ["xlhector10"] - }, "Web/API/console/trace_static": { "modified": "2019-03-23T22:22:51.545Z", "contributors": ["Axl-Nolasco"] diff --git a/files/es/web/api/console/timeend_static/index.md b/files/es/web/api/console/timeend_static/index.md index bc84372a79a0f8..48a9be3667dcbc 100644 --- a/files/es/web/api/console/timeend_static/index.md +++ b/files/es/web/api/console/timeend_static/index.md @@ -1,6 +1,6 @@ --- title: Console.timeEnd() -slug: Web/API/console/timeend_static +slug: Web/API/console/timeEnd_static --- {{APIRef("Console API")}} From e321d9d5d6d410e62926f26f665286135ed07b82 Mon Sep 17 00:00:00 2001 From: Chunhui Fu Date: Tue, 20 Aug 2024 09:04:41 +0800 Subject: [PATCH 008/144] [zh-cn]: update valid datetime values list (#23153) Co-authored-by: Jason Ren <40999116+jasonren0403@users.noreply.github.com> --- files/zh-cn/web/html/element/time/index.md | 164 +++++++++++++++------ 1 file changed, 123 insertions(+), 41 deletions(-) diff --git a/files/zh-cn/web/html/element/time/index.md b/files/zh-cn/web/html/element/time/index.md index 626a497dc966c1..cf0207da8f648b 100644 --- a/files/zh-cn/web/html/element/time/index.md +++ b/files/zh-cn/web/html/element/time/index.md @@ -2,7 +2,7 @@ title: