recursal/MDN huggingface dataset:
DedicatedWorkerGlobalScope.close()
==================================

**`close()`** は `DedicatedWorkerGlobalScope` インターフェイスのメソッドで、 `DedicatedWorkerGlobalScope` のイベントループでキューに入れられたタスクを破棄し、この具体的なスコープを閉じます。

構文
--


```js
close()
```

### 引数

なし。

### 返値

なし (`undefined`)。

例
-

ワーカー自体の内部からワーカーインスタンスを閉じたい場合は、以下のように呼び出してください。


```js
close();
```


`close()` と `self.close()` は事実上同じです。どちらも `close()` がワーカーの内部スコープから呼び出されることを表します。

**メモ:** メインスレッドからワーカーを停止する方法もあります。`Worker.terminate` メソッドです。

仕様書
---

| Specification |
| --- |
| HTML Standard # dom-dedicatedworkerglobalscope-close-dev |

ブラウザーの互換性
---------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

関連情報
----

`DedicatedWorkerGlobalScope`
HTMLOptionElement: Option() コンストラクター
====================================

**`Option()`** コンストラクターは、新しい `HTMLOptionElement` を生成します。

構文
--


```js
new Option()
new Option(text)
new Option(text, value)
new Option(text, value, defaultSelected)
new Option(text, value, defaultSelected, selected)
```

### 引数

`text` 省略可

文字列で、要素の内容、すなわち表示するテキストを表します。これが指定されていない場合は、 ""（空文字列）が既定値として使用されます。

`value` 省略可

文字列で、この `HTMLOptionElement` の値、すなわち対応する `<option>` 要素の value 属性を表します。指定されなかった場合は text の値が value として、例えば、フォームがサーバーへ送信されるときには `<select>` 要素の値として使用されます。

`defaultSelected` 省略可

`true` または `false` のどちらかの値で、`selected` 属性の値を設定するものです。すなわち、ページが最初に読み込まれたときに、この `<option>` が `<select>` 要素で選択される既定値になるようにします。これが指定されていない場合は、既定値の false が使用されます。なお、 true を指定しても、その選択肢が selected でない場合は選択状態にはなりません。

`selected` 省略可

`true` または `false` のどちらかの値で、その選択肢の選択状態を設定します。既定値は false（未選択）です。省略された場合、defaultSelected 引数が true であっても、その選択肢は選択されません。

例
-

### 単に新しい選択肢を追加する


```js
/\* 以下の HTML があるとする
<select id='s'>

</select>
\*/

const s = document.getElementById("s");
const options = [Four, Five, Six];

options.forEach((element, key) => {
  s[key] = new Option(element, key);
});
```

### 様々な引数で選択肢を追加する


```js
/\* 以下の HTML があると想定する
<select id="s">
 <option>First</option>
 <option>Second</option>
 <option>Third</option>
</select>
\*/

const s = document.getElementById("s");
const options = ["zero", "one", "two"];

options.forEach((element, key) => {
  if (element === "zero") {
    s[key] = new Option(element, s.options.length, false, false);
  }
  if (element === "one") {
    s[key] = new Option(element, s.options.length, true, false); // "selected" 属性を追加
  }
  if (element === "two") {
    s[key] = new Option(element, s.options.length, false, true); // "view" の中で選択状態になる
  }
});

/\* 結果
<select id="s">
 <option value="0">zero</option>
 <option value="1" selected="">one</option>
 <option value="2">two</option> // ユーザーにはこれが 'selected' に見える
</select>
\*/
```

仕様書
---

| Specification |
| --- |
| HTML Standard # dom-option-dev |

ブラウザーの互換性
---------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.
SubtleCrypto: generateKey() メソッド
================================

**安全なコンテキスト用:** この機能は一部またはすべての対応しているブラウザーにおいて、安全なコンテキスト (HTTPS) でのみ利用できます。

**`generateKey()`** は `SubtleCrypto` インターフェイスのメソッドで、新しい（対称鍵アルゴリズム用の）鍵または（公開鍵アルゴリズム用の）鍵ペアを生成します。

構文
--


```js
generateKey(algorithm, extractable, keyUsages)
```

### 引数

`algorithm`

生成する鍵の種類を指定し、アルゴリズム固有の追加パラメータを与えるオブジェクトです。

* RSASSA-PKCS1-v1\_5, RSA-PSS,
 RSA-OAEP:
 `RsaHashedKeyGenParams` オブジェクトを渡します。
* ECDSA, ECDH:
 `EcKeyGenParams` オブジェクトを渡します。
* HMAC:
 `HmacKeyGenParams` オブジェクトを渡します。
* AES-CTR, AES-CBC,
 AES-GCM, AES-KW:
 `AesKeyGenParams` オブジェクトを渡します。

`extractable`

 論理値で、 `SubtleCrypto.exportKey()` や `SubtleCrypto.wrapKey()`
 を用いて鍵を取り出すことができるかを表します。


`keyUsages`

 新しく生成する鍵で何ができるかを表す `Array` 。
 配列の要素として使用可能な値は以下の通りです。


* `encrypt`: 鍵をメッセージの 暗号化 に用いてよい。
* `decrypt`: 鍵をメッセージの 復号 に用いてよい。
* `sign`: 鍵をメッセージの 署名 に用いてよい。
* `verify`: 鍵を署名の 検証 に用いてよい。
* `deriveKey`: 鍵を 新しい鍵の導出 に用いてよい。
* `deriveBits`: 鍵を ビット列の導出 に用いてよい。
* `wrapKey`: 鍵を 鍵のラップ に用いてよい。
* `unwrapKey`: 鍵を ラップされた鍵の取り出し に用いてよい。

### 返値

`CryptoKey` （対称鍵アルゴリズムの場合）または `CryptoKeyPair` （公開鍵アルゴリズムの場合）で解決される `Promise` を返します。

### 例外

以下の例外が発生した時、プロミスは拒否されます。

`SyntaxError` `DOMException`

 結果が、種類が `secret` または `private` である `CryptoKey` であるが、
 `keyUsages` が空である時発生します。


`SyntaxError` `DOMException`

 結果が `CryptoKeyPair` であり、
 その `privateKey.usages` 属性が空である時発生します。


例
-

**メモ:** GitHub 上で動く例を試すことができます。

### RSA 鍵ペアの生成

 このコードは、RSA-OAEP の暗号化用鍵ペアを生成します。
 GitHub でコード全体を見る


```js
let keyPair = await window.crypto.subtle.generateKey(
  {
    name: "RSA-OAEP",
    modulusLength: 4096,
    publicExponent: new Uint8Array([1, 0, 1]),
    hash: "SHA-256",
  },
  true,
  ["encrypt", "decrypt"],
);
```

### 楕円曲線鍵ペアの生成

 このコードは、ECDSA の署名用鍵ペアを生成します。
 GitHub でコード全体を見る


```js
let keyPair = await window.crypto.subtle.generateKey(
  {
    name: "ECDSA",
    namedCurve: "P-384",
  },
  true,
  ["sign", "verify"],
);
```

### HMAC 鍵の生成

 このコードは、HMAC の署名用鍵を生成します。
 GitHub でコード全体を見る


```js
let key = await window.crypto.subtle.generateKey(
  {
    name: "HMAC",
    hash: { name: "SHA-512" },
  },
  true,
  ["sign", "verify"],
);
```

### AES 鍵の生成

 このコードは、AES-GCM の暗号化用鍵を生成します。
 GitHub でコード全体を見る


```js
let key = await window.crypto.subtle.generateKey(
  {
    name: "AES-GCM",
    length: 256,
  },
  true,
  ["encrypt", "decrypt"],
);
```

仕様書
---

| Specification |
| --- |
| Web Cryptography API # SubtleCrypto-method-generateKey |

ブラウザーの互換性
---------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

関連情報
----

* Cryptographic key length recommendations
* NIST Transitioning the Use of Cryptographic Algorithms and Key Lengths
* 暗号鍵設定ガイダンス～暗号鍵の鍵長選択方法と運用方法～：IPA 独立行政法人 情報処理推進機構
SubtleCrypto: decrypt() メソッド
============================

**安全なコンテキスト用:** この機能は一部またはすべての対応しているブラウザーにおいて、安全なコンテキスト (HTTPS) でのみ利用できます。

**`decrypt()`** は `SubtleCrypto` インターフェイスのメソッドで、暗号化されたデータを復号します。
 引数として key、オプションの引数、復号するデータ（「暗号文」とも呼ばれます）を取ります。
 これは、復号されたデータ（「平文」とも呼ばれます）で履行される `Promise` を返します。

構文
--


```js
decrypt(algorithm, key, data)
```

### 引数

`algorithm`

 使用するアルゴリズムと、必要に応じて追加の引数を指定するオブジェクトです。
 追加引数に指定された値は、対応する `encrypt()` 呼び出しに渡された値と一致しなければなりません。


* RSA-OAEP を使用するには、 `RsaOaepParams` (en-US) を渡してください。
* AES-CTR を使用するには、 `AesCtrParams` (en-US) を渡してください。
* AES-CBC を使用するには、 `AesCbcParams` (en-US) を渡してください。
* AES-GCM を使用するには、 `AesGcmParams` (en-US) を渡してください。

`key`

 復号に使用するキーを格納した `CryptoKey` オブジェクト。
 RSA-OAEP を用いる場合、これは `CryptoKeyPair` オブジェクトの `privateKey` プロパティとなります。


`data`

`ArrayBuffer`、`TypedArray`、`DataView` のいずれかで、復号するデータ（暗号文 とも呼ばれます）を格納します。

### 返値

平文を格納した `ArrayBuffer` で履行される `Promise` です。

### 例外

以下の例外が発生した場合、プロミスは拒否されます。

`InvalidAccessError` `DOMException`

リクエストされた処理が指定された鍵に対して有効でない場合に発生します（無効な暗号化アルゴリズムや、指定した暗号化アルゴリズムに対して無効な鍵など）。

`OperationError` `DOMException`

その演算処理固有の理由（アルゴリズム引数のサイズが不正、暗号文の復号にエラーがあったなど）で失敗した場合に発生します。

対応しているアルゴリズム
------------

`decrypt()` メソッドは、 `encrypt()` メソッドと同じアルゴリズムに対応しています。

例
-

**メモ:** GitHub 上の動作例を試してみてください。

### RSA-OAEP

このコードは RSA-OAEP を用いて `ciphertext` を復号します。完全なコードは GitHub で参照してください。


```js
function decryptMessage(privateKey, ciphertext) {
  return window.crypto.subtle.decrypt(
    { name: "RSA-OAEP" },
    privateKey,
    ciphertext,
  );
}
```

### AES-CTR

 このコードは `ciphertext` を、 CTR モードの AES を使用して復号します。
 `counter` は暗号化に用いた値と一致しなければならないことに注意してください。完全なコードは GitHub で参照してください。


```js
function decryptMessage(key, ciphertext) {
  return window.crypto.subtle.decrypt(
    { name: "AES-CTR", counter, length: 64 },
    key,
    ciphertext,
  );
}
```

### AES-CBC

このコードは `ciphertext` を、 CBC モードの AES を使用して復号します。 `iv` は暗号化に用いた値と一致しなければならないことに注意してください。完全なコードは GitHub で参照してください。


```js
function decryptMessage(key, ciphertext) {
  // iv 値は暗号化に使用した値と同じ
  return window.crypto.subtle.decrypt({ name: "AES-CBC", iv }, key, ciphertext);
}
```

### AES-GCM

このコードは `ciphertext` を、 GCM モードで AES を用いて復号します。 `iv` は暗号化に用いた値と一致しなければならないことに注意してください。完全なコードは GitHub で参照してください。


```js
function decryptMessage(key, ciphertext) {
  // iv 値は暗号化に使用した値と同じ
  return window.crypto.subtle.decrypt({ name: "AES-GCM", iv }, key, ciphertext);
}
```

仕様書
---

| Specification |
| --- |
| Web Cryptography API # SubtleCrypto-method-decrypt |

ブラウザーの互換性
---------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

関連情報
----

* `SubtleCrypto.encrypt()`
* RFC 3447 は RSAOAEP を定義しています。
* NIST SP800-38A は CTR モードを定義しています。
* NIST SP800-38A は CBC モードを定義しています。
* NIST SP800-38D は GCM モードを定義しています。
* FIPS 198-1 は HMAC を定義しています。
SubtleCrypto: digest() メソッド
===========================

**安全なコンテキスト用:** この機能は一部またはすべての対応しているブラウザーにおいて、安全なコンテキスト (HTTPS) でのみ利用できます。

**`digest()`** は `SubtleCrypto` インターフェイスのメソッドで、指定されたデータのダイジェストを返します。ダイジェストとは、可変長の入力に由来する固定長の短い値です。暗号的ダイジェスト値は耐衝突性を示すため、同じダイジェスト値を持つ 2 つの異なる入力を見つけるのは非常に困難です。

引数として、使用するダイジェストアルゴリズムの識別子とダイジェスト値の元となるデータを受け取ります。ダイジェスト値で解決される `Promise` を返します。

この API はストリーミング入力に対応していないことに注意してください。入力全体をメモリーに読み込んでから、ダイジェスト関数に渡す必要があります。

構文
--


```js
digest(algorithm, data)
```

### 引数

`algorithm`

文字列で、使用するダイジェストアルゴリズムを定義します。対応している値は次のとおりです。

* `"SHA-1"`（暗号化アプリケーションでは使用しないでください）
* `"SHA-256"`
* `"SHA-384"`
* `"SHA-512"`.

`data`

`ArrayBuffer`、`TypedArray`、`DataView` のいずれかのオブジェクトで、ダイジェスト値の元となるデータが入ります。

### 返値

`Promise` で、ダイジェスト値を含む `ArrayBuffer` で履行されます。

対応しているアルゴリズム
------------

ダイジェストアルゴリズムは暗号ハッシュ関数とも呼ばれ、任意の大きなデータブロックを固定サイズの出力（通常は入力よりもはるかに短い出力）に変換します。暗号化にはさまざまな用途があります。

| アルゴリズム | 出力長（ビット数） | ブロックサイズ（ビット数） | 仕様書 |
| --- | --- | --- | --- |
| SHA-1 | 160 | 512 | FIPS 180-4, section 6.1 |
| SHA-256 | 256 | 512 | FIPS 180-4, section 6.2 |
| SHA-384 | 384 | 1024 | FIPS 180-4, section 6.5 |
| SHA-512 | 512 | 1024 | FIPS 180-4, section 6.4 |

**警告:** SHA-1 は現在脆弱であると見なされているため、暗号化アプリケーションには使用しないでください。

**メモ:** キー付きハッシュメッセージ認証コード (HMAC) の作成方法をここで探している場合は、代わりに SubtleCrypto.sign() を使用する必要があります。

例
-

### 基本的な例

この例では、メッセージをエンコードし、 SHA-256 ダイジェスト値を計算して、ダイジェスト長を記録します。


```js
const text =
  "An obscure body in the S-K System, your majesty. The inhabitants refer to it as the planet Earth.";

async function digestMessage(message) {
  const encoder = new TextEncoder();
  const data = encoder.encode(message);
  const hash = await crypto.subtle.digest("SHA-256", data);
  return hash;
}

digestMessage(text).then((digestBuffer) =>
  console.log(digestBuffer.byteLength),
);
```

### ダイジェスト値を 16 進文字列に変換する

ダイジェストは`ArrayBuffer`として返されますが、比較および表示のために、ダイジェスト値は多くの場合 16 進文字列として表されます。 この例では、ダイジェストを計算し、`ArrayBuffer`を 16 進文字列に変換します。


```js
const text =
  "An obscure body in the S-K System, your majesty. The inhabitants refer to it as the planet Earth.";

async function digestMessage(message) {
  const msgUint8 = new TextEncoder().encode(message); // (utf-8 の) Uint8Array にエンコードする
  const hashBuffer = await crypto.subtle.digest("SHA-256", msgUint8); // メッセージをハッシュする
  const hashArray = Array.from(new Uint8Array(hashBuffer)); // バッファーをバイト列に変換する
  const hashHex = hashArray
    .map((b) => b.toString(16).padStart(2, "0"))
    .join(""); // バイト列を 16 進文字列に変換する
  return hashHex;
}

digestMessage(text).then((digestHex) => console.log(digestHex));
```

仕様書
---

| Specification |
| --- |
| Web Cryptography API # SubtleCrypto-method-digest |

ブラウザーの互換性
---------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

関連情報
----

* SubtleCrypto の暗号以外の使用法
* Chromium secure origins specification
* FIPS 180-4 SHA 系のダイジェストアルゴリズムを定義しています。
HTMLLinkElement: sheet プロパティ
============================

**`sheet`** は `HTMLLinkElement` インターフェイスの読み取り専用プロパティで、この要素に関連付けられたスタイルシートが入ります。

スタイルシートは `rel="stylesheet"` が `<link>` と一緒に使用されると `HTMLLinkElement` に関連付けられます。

値
-

`StyleSheet` オブジェクトです。この要素に関連付けられたものがない場合は `null` になります。

例
-


```html
<html>
  <header>
    <link rel="stylesheet" href="styles.css" />
    …
  </header>
</html>
```


`HTMLLinkElement` オブジェクトの `sheet` プロパティは `styles.css` と記述されているスタイルシート (`StyleSheet`) オブジェクトを返します。

仕様書
---

| Specification |
| --- |
| CSS Object Model (CSSOM) # dom-linkstyle-sheet |

ブラウザーの互換性
---------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.
HTMLLinkElement: fetchPriority プロパティ
====================================

Limited availability
--------------------

This feature is not Baseline because it does not work in some of the most widely-used browsers.

* Learn more
* See full compatibility
* Report feedback
**Experimental:** **これは実験的な機能です。**  
本番で使用する前にブラウザー互換性一覧表をチェックしてください。

**`fetchPriority`** は `HTMLLinkElement` インターフェイスのプロパティで、ブラウザーが同じ種類の他のリソースに対して、与えられたリソースの先読みをどのように優先させるべきかを示すヒントを表します。

値
-

優先度のヒントを表す文字列です。使用可能な値は以下のとおりです。

`high`

他の同じ種類のリソースと比較して、高い優先度で先読みを行います。

`low`

同じ種類の他のリソースに対して、低い優先度で画像を取得します。

`auto`

既定のモードで、フェッチの優先順位を指定しません。ブラウザーがユーザーにとって最適なものを決定します。

`fetchPriority` プロパティは、先読みの優先順位を高くしたり低くしたりするための信号を送ることができます。これは `<link>` 要素に適用すると、読み込み処理の早い段階で、ユーザーエクスペリエンスにとって重要な先読みを知らせることができ、便利です。

リソースの読み込みに対するヒントの効果はブラウザーによって異なるため、必ず複数のブラウザーエンジンでテストしてください。

ブラウザーがリソースを自動的に読み込むための最適な方法を推測できないような例外的なケースには、控えめに使用するようにしてください。過剰に使用すると、パフォーマンスが低下することがあります。

例
-


```js
const preloadLink = document.createElement("link");
preloadLink.href = "myimage.jpg";
preloadLink.rel = "preload";
preloadLink.as = "image";
preloadLink.fetchPriority = "high";
document.head.appendChild(preloadLink);
```

仕様書
---

| Specification |
| --- |
| HTML Standard # attr-link-fetchpriority |

ブラウザーの互換性
---------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.
HTMLLinkElement: rel プロパティ
==========================

**`HTMLLinkElement.rel`** プロパティは `rel` 属性を反映します。これは、空白で区切られたリンク種別のリストの入った文字列であり、`<link>` 要素で表されるリソースと現在の文書との関係を示します。

この属性の最も一般的な使用法は、外部のスタイルシートへのリンクを指定する場合です。プロパティに `stylesheet` を設定し、 `href` 属性にページをフォーマットする外部スタイルシートの URL を設定します。

値
-

文字列です。

例
-


```js
const links = document.getElementsByTagName("link");
for (const link of links) {
  console.log(link);
}
```

仕様書
---

| Specification |
| --- |
| HTML Standard # dom-link-rel |

ブラウザーの互換性
---------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

関連情報
----

* `<a>` および `<area>` の同等のプロパティである `HTMLAnchorElement.rel` および `HTMLAreaElement.rel`
* まったく同じリストをトークンとして扱うもの: `HTMLLinkElement.relList`
HTMLLinkElement: as プロパティ
=========================

**`as`** は `HTMLLinkElement` インターフェイスのプロパティで、 HTML リンクによって読み込まれるコンテンツの種類を表す文字列として、 `"script"`, `"style"`, `"image"`, `"video"`, `"audio"`, `"track"`, `"font"`, `"fetch"` のいずれかを返します。

値
-

文字列です。

仕様書
---

| Specification |
| --- |
| HTML Standard # dom-link-as |

ブラウザーの互換性
---------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.
HTMLLinkElement: relList プロパティ
==============================

**`HTMLLinkElement.relList`** は読み取り専用プロパティで、`rel` 属性を反映します。 これは生きた `DOMTokenList` で、`<link>` 要素で表されるリソースと現在のドキュメントの間の関係を示すリンク種別のセットが入ります。

このプロパティ自体は読み取り専用です。つまり、`DOMTokenList` を別のものに置き換えることはできませんが、その内容は変更できます。

値
-

生きた `DOMTokenList` です。

例
-


```js
const links = document.getElementsByTagName("link");
const length = links.length;
for (const link of links) {
  const listLength = list.length;
  console.log("New link found.");
  relList.forEach((relEntry) => {
    console.log(relEntry);
  });
}
```

仕様書
---

| Specification |
| --- |
| HTML Standard # dom-link-rellist |

ブラウザーの互換性
---------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

関連情報
----

* `<a>` および `<area>` の同等のプロパティである `HTMLAnchorElement.relList` および `HTMLAreaElement.relList`
* まったく同じリストを文字列の空白区切りトークンとして扱うもの: `HTMLLinkElement.rel`
HTMLLinkElement: referrerPolicy プロパティ
=====================================

**`HTMLLinkElement.referrerPolicy`** プロパティは、リソースの取得時に送信されるリファラーを定義する `<link>` 要素の HTML `referrerpolicy` 属性を反映します。

詳しくは HTTP の `Referrer-Policy` ヘッダーを参照してください。

値
-

文字列で、以下のうちの一つです。

`no-referrer`

`Referer` ヘッダーは完全に省略されます。リクエストと共に送信されるリファラー情報はありません。

`no-referrer-when-downgrade`

プロトコルのセキュリティレベルが変わらない場合（例: HTTP→HTTP、HTTPS→HTTPS）にはリファラーとして URL を送信し、セキュリティレベルの低い宛先（例: HTTPS→HTTP）には送信しません。

`origin`

 どのような場合でも、この文書のオリジンだけをリファラーとして送信します。
 文書 `https://example.com/page.html` はリファラーとして `https://example.com/` を送ります。


`origin-when-cross-origin`

同一オリジンリクエストを行う場合は完全な URL を送信し、それ以外の場合は文書のオリジンのみを送信します。

`same-origin`

リファラーは同一サイトオリジンには送信されますが、オリジン間リクエストではリファラー情報が送信されません。

`strict-origin`

プロトコルのセキュリティレベルが変わらない場合（例: HTTPS→HTTPS）だけ、文書のオリジンをリファラーとして送信し、セキュリティレベルの低い宛先（例: HTTPS→HTTP）には送信しないようにします。

`strict-origin-when-cross-origin` (default)

これは、ポリシーが指定されていない場合のユーザーエージェントの既定の動作です。同一オリジンリクエストを行う場合は完全な URL を送信し、プロトコルのセキュリティレベルが変わらない場合はオリジンのみを送信し（例: HTTPS→HTTPS）、セキュリティレベルの低い宛先にはヘッダーを送信しません（例: HTTPS→HTTP）。

`unsafe-url`

 同一オリジンまたはオリジン間リクエストを実行するときに、完全な URL を送信します。このポリシーは、 TLS で保護されたリソースから安全でないオリジンへのオリジンとパスを漏洩します。
 この設定の影響を慎重に検討してください。


例
-


```js
const links = document.getElementsByTagName("link");
links[0].referrerPolicy; // "no-referrer"
```

仕様書
---

| Specification |
| --- |
| HTML Standard # dom-link-referrerpolicy |

ブラウザーの互換性
---------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

関連情報
----

* HTTP ヘッダー `Referrer-Policy`
* `HTMLAnchorElement.referrerPolicy`
* `HTMLAreaElement.referrerPolicy`
* `HTMLIFrameElement.referrerPolicy`
* `HTMLImageElement.referrerPolicy`
Credential: type プロパティ
======================

**`type`** は `Credential` インターフェイスのプロパティで、視覚情報の種類が入った文字列を返します。有効な値は `password`、`federated`、`public-key` です。

値
-

この資格情報に与えられた名前の入った文字列です。

例
-


```js
// TBD
```

仕様書
---

| Specification |
| --- |
| Credential Management Level 1 # dom-credential-type |

ブラウザーの互換性
---------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.
Credential: id プロパティ
====================

**`id`** は `Credential` インターフェイスのプロパティで、この資格情報の識別子の入った文字列を返します。これは GUID、ユーザー名、メールアドレスなどになる可能性があります。

値
-

資格情報の識別子が入った文字列です。

仕様書
---

| Specification |
| --- |
| Credential Management Level 1 # dom-credential-id |

ブラウザーの互換性
---------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.
AudioWorkletNode: port プロパティ
============================

`AudioWorkletNode` インターフェイスの読み取り専用プロパティ **`port`** は、関連付けられた `MessagePort` を返します。これにより、ノードと対応する `AudioWorkletProcessor` の間で双方向通信ができます。

**メモ:** チャネルのもう一方の端にあるポートは、処理器の `port` プロパティから参照できます。

値
-

この `AudioWorkletNode` と対応する `AudioWorkletProcessor` を繋ぐ `MessagePort` オブジェクトです。

例
-

双方向通信でできることのデモのため、無音を出力し、`AudioWorkletNode` からの ping 要求に応える `AudioWorkletProcessor` を作成します。

 まず、独自の `AudioWorkletProcessor` を定義し、登録します。
 これは別のファイルで行うことに注意してください。


```js
// ping-pong-processor.js
class PingPongProcessor extends AudioWorkletProcessor {
  constructor(...args) {
    super(...args);
    this.port.onmessage = (e) => {
      console.log(e.data);
      this.port.postMessage("pong");
    };
  }
  process(inputs, outputs, parameters) {
    return true;
  }
}

registerProcessor("ping-pong-processor", PingPongProcessor);
```


そして、メインスクリプトファイルで処理器をロードし、処理器の名前を渡して `AudioWorkletNode` のインスタンスを作成し、このノードを音声グラフに接続します。


```js
const audioContext = new AudioContext();
await audioContext.audioWorklet.addModule("ping-pong-processor.js");
const pingPongNode = new AudioWorkletNode(audioContext, "ping-pong-processor");
// 毎秒、AudioWorkletNode から
// 文字列 'ping' が入ったメッセージを AudioWorkletProcessor に送る
setInterval(() => pingPongNode.port.postMessage("ping"), 1000);
pingPongNode.port.onmessage = (e) => console.log(e.data);
pingPongNode.connect(audioContext.destination);
```


このプログラムは、コンソールに毎秒文字列 `"ping"` と `"pong"` を出力します。

仕様書
---

| Specification |
| --- |
| Web Audio API # dom-audioworkletnode-port |

ブラウザーの互換性
---------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

関連情報
----

* ウェブオーディオ API
* Web Audio API の使用
AudioWorkletNode: processorerror イベント
=====================================

`processorerror` イベントは、ノードで用いている `AudioWorkletProcessor` がコンストラクターか、`process` メソッドか、ユーザー定義のクラスメソッドのどれかで例外を投げた時発火します。

例外が投げられた後は、処理器 (そして対応するノード) はずっと無音を出力します。

構文
--

`addEventListener()` のようなメソッドでイベント名を用いるか、イベントハンドラープロパティを設定します。


```js
addEventListener("processorerror", (event) => { })

onprocessorerror = (event) => { }
```

イベント型
-----

汎用の `Event` です。

例
-

処理器が例外を投げたことの通知を受け取るため、以下のように、`addEventListener()` を用いて `AudioWorkletNode` のインスタンスにハンドラーを追加できます。


```js
whiteNoiseNode.addEventListener("processorerror", (event) => {
  console.error("エラーが発生しました！");
});
```


別の方法として、`processorerror` イベントのハンドラーを設定するために `onprocessorerror` イベントハンドラープロパティを用いることもできます。


```js
whiteNoiseNode.onprocessorerror = (event) => {
  console.error("エラーが発生しました！");
};
```

仕様書
---

| Specification |
| --- |
| Web Audio API # dom-audioworkletnode-onprocessorerror |

ブラウザーの互換性
---------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

関連情報
----

* Web Audio API の使用
AudioWorkletNode: AudioWorkletNode() コンストラクター
=============================================

**`AudioWorkletNode()`** コンストラクターは新しい `AudioWorkletNode` オブジェクトを作成します。このオブジェクトは、JavaScript の関数により独自の音声処理を行う `AudioNode` を表します。

構文
--


```js
new AudioWorkletNode(context, name)
new AudioWorkletNode(context, name, options)
```

### 引数

`context`

このノードを関連付ける `BaseAudioContext` のインスタンスです。

`name`

 このノードのもととなる `AudioWorkletProcessor` の名前を表す文字列です。
 指定の名前の処理器が `AudioWorkletGlobalScope.registerProcessor()` メソッドで登録されている必要があります。


`options` 省略可

以下の任意のプロパティのうち 0 個以上を持ち、新しいノードの設定をするオブジェクトです。

**メモ:** このオブジェクトに構造化複製アルゴリズムを適用した結果が内部で対応する `AudioWorkletProcessor()` コンストラクターに渡されます。
 これにより、用いるユーザー定義の `AudioWorkletProcessor` の初期化のカスタマイズが可能になります。


`numberOfInputs` 省略可

`numberOfInputs` プロパティを初期化する値です。デフォルト値は 1 です。

`numberOfOutputs` 省略可

`numberOfOutputs` プロパティを初期化する値です。デフォルト値は 1 です。

`outputChannelCount` 省略可

それぞれの出力のチャンネル数を定義する **配列** です。たとえば、`outputChannelCount: [n, m]` は最初の出力のチャンネル数を `n` に、2 番目の出力のチャンネル数を `m` に設定します。配列の長さは `numberOfOutputs` と一致しなければなりません。

`parameterData` 省略可

このノード (の `parameters` プロパティ) の独自の `AudioParam` オブジェクトの初期値を持つオブジェクトです。独自パラメーターの名前をキー、初期値を値とします。

`processorOptions` 省略可

用いる `AudioWorkletProcessor` の初期化のカスタマイズに用いる任意の追加データです。


### 例外

`NotSupportedError` `DOMException`

指定された `options.outputChannelCount` が `0` である、または現在の実装が対応する最大値より大きいとき投げられます。

`options.numberOfInputs` と `options.numberOfOutputs` の両方が 0 であるとき投げられます。

`IndexSizeError` `DOMException`

配列 `options.outputChannelCount` の長さが `options.numberOfOutputs` と一致しないとき投げられます。

使用上の注意点
-------

`options` 引数の値によって、以下の効果があります。

入力の数と出力の数を両方 0 に設定すると、`NotSupportedError` が投げられ、生成処理が中断されます。配列 `outputChannelCount` の長さが `numberOfOutputs` と一致しない場合は、`IndexSizeError` `DOMException` が投げられます。

`outputChannelCount` が指定されておらず、`numberOfInputs` と `numberOfOutputs` がともに 1 の場合は、`AudioWorkletNode` の初期チャンネル数は 1 になります。この場合、出力のチャンネル数を変えることで、入力のチャンネル数と `AudioNode` の `channelCountMode` プロパティの設定に基づき、計算されたチャンネル数を動的に変えることができます。

`outputChannelCount` が指定されており、*かつ* `numberOfInputs` と `numberOfOutputs` がともに 1 の場合、このノードのチャンネル数は `outputChannelCount` の値になります。そうでない場合は、それぞれの出力のチャンネル数は配列 `outputChannelCount` の対応する値に従って設定されます。

例
-

*`AudioWorkletNode` のページに、ユーザー定義の音声処理のデモを行う完全な例があります。*

例外
--

| Specification |
| --- |
| Web Audio API # dom-audioworkletnode-audioworkletnode |

ブラウザーの互換性
---------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

関連情報
----

* ウェブオーディオ API
* Background audio processing using AudioWorklet (en-US)
* `AudioWorkletNode` インターフェイス