recursal/MDN huggingface dataset:
BluetoothDevice
===============

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

Web Bluetooth API の`BluetoothDevice` インターフェイスは、特定のスクリプト実行環境下における Bluetooth デバイスを表します。

EventTarget

BluetoothDeviceインスタンスプロパティ
-----------

`BluetoothDevice.id` 
Experimental
 読取専用 

デバイスを一意に識別する文字列です。

`BluetoothDevice.name` 
Experimental
 読取専用 

デバイスの人間にわかりやすい名前を表す文字列です。

`BluetoothDevice.gatt` 
Experimental
 読取専用 

デバイスの `BluetoothRemoteGATTServer` への参照です。

インスタンスメソッド
----------

`BluetoothDevice.watchAdvertisements()` 
Experimental

`undefined` で解決するか、アドバタイズが何らかの理由で表示できない場合はエラーで拒否される `Promise` を返します。

`BluetoothDevice.forget()` 
Experimental

ユーザーがアクセスを許可したデバイスへのアクセスを無効化します。

仕様書
---

| Specification |
| --- |
| Web Bluetooth # bluetoothdevice-interface |

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

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

**非標準:** この機能は標準ではなく、標準化の予定もありません。公開されているウェブサイトには使用しないでください。ユーザーによっては使用できないことがあります。実装ごとに大きな差があることもあり、将来は振る舞いが変わるかもしれません。

**非推奨:** この機能は非推奨になりました。まだ対応しているブラウザーがあるかもしれませんが、すでに関連するウェブ標準から削除されているか、削除の手続き中であるか、互換性のためだけに残されている可能性があります。使用を避け、できれば既存のコードは更新してください。このページの下部にある互換性一覧表を見て判断してください。この機能は突然動作しなくなる可能性があることに注意してください。

**`MouseScrollEvent`** インターフェイスは、ユーザーがマウスホイールや同様の入力デバイスを動かすことによって発生するイベントを表します。

**警告:** wheel イベントにはこのインターフェイスを使用しないでください。

`MouseWheelEvent` と同様、このインターフェイスは非標準であり、非推奨です。 Gecko ベースのブラウザーでのみ使用されていました。代わりに、標準の *`WheelEvent`* を使用してください。

メソッド概要
------


```webidl
void initMouseScrollEvent(
  in DOMString typeArg,
  in boolean canBubbleArg,
  in boolean cancelableArg,
  in nsIDOMAbstractView viewArg,
  in long detailArg,
  in long screenXArg,
  in long screenYArg,
  in long clientXArg,
  in long clientYArg,
  in boolean ctrlKeyArg,
  in boolean altKeyArg,
  in boolean shiftKeyArg,
  in boolean metaKeyArg,
  in unsigned short buttonArg,
  in nsIDOMEventTarget relatedTargetArg,
  in long axis);
```

属性
--

| 属性 | 型 | 説明 |
| --- | --- | --- |
| `axis` 読取専用  | `long` | スクロール方向を示します。 |

定数
--

### デルタモード

| 定数 | 値 | 説明 |
| --- | --- | --- |
| `HORIZONTAL_AXIS` | `0x01` | このイベントは、水平ホイール操作によって発生した。 |
| `VERTICAL_AXIS` | `0x02` | このイベントは、垂直ホイール操作によって発生した。 |

インスタンスメソッド
----------

`initMouseScrollEvent()`

`nsIDOMMouseScrollEvent::initMouseScrollEvent()` を参照。

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

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

関連情報
----

* `DOMMouseScroll`
* `MozMousePixelScroll`
* 標準化されたマウスホイールイベントオブジェクト: `WheelEvent`
端末方向イベント
========

端末方向イベントは、端末の物理的な方向を検出したり、端末の動きを検出したりするイベントです。

概念と使用方法
-------

モバイル端末には、一般的にジャイロスコープ、コンパス、加速度などのセンサーがあり、端末上で動作するアプリケーションが端末の方向や動きを検出することができます。

方向イベントによって、ユーザーの端末の向きに応じて動作を変えたり、ユーザーが端末を移されたときに反応したりするウェブアプリケーションを書くことができます。

端末方向イベントを使用する典型的な機能には、以下のようなものがあります。

* ウェブベースのゲームにおいて、ユーザーが端末を傾けたり移動させたりすることによって、ゲーム内のキャラクターやオブジェクトの動きを制御することを可能にすること。
* 地図アプリケーションにおいて、端末の位置に基づいて地図の方向を変えたり、ユーザーの動きに合わせて更新される道順を提供したりするため。
* ジェスチャー認識 — 例えば、「シェイク」ジェスチャーを認識し、ユーザーが機器を振ったときに入力エリアをクリアするなどのアクションを実行するために使用します。

**メモ:** この API はモバイルブラウザーが広く対応しています。デスクトップ専用のブラウザーでは、ハードウェアの違いによる制約もありますが、センサーを搭載した端末でのこの API の主な用途を考えると、これらの制約が重要な意味を持つことはほとんどありません。

インターフェイス
--------

`DeviceOrientationEvent`

端末の物理的な方向の変化を表します。

`DeviceMotionEvent`

端末の加速度を、回転数に加えて表します。

`DeviceMotionEventAcceleration`

端末が経験している加速度を、 3 軸すべてで表します。

`DeviceMotionEventRotationRate`

端末が回転する速度を、 3 軸すべてで表します。

イベント
----

`deviceorientation`

地球座標フレームと比較した端末の現在の方向に関する、新しいデータが端末から利用できるときに発行されます。

`devicemotion`

一定間隔で発行され、その時点で端末が受けている加速度の物理的な力の大きさと、端末の回転速度を示します。

`deviceorientationabsolute`

端末の絶対的な方向が変化したときに発行されます。

仕様書
---

| Specification |
| --- |
| DeviceOrientation Event Specification  |

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

### api.Window.deviceorientation\_event

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

### api.Window.devicemotion\_event

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

### api.Window.deviceorientationabsolute\_event

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

### api.DeviceOrientationEvent

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

### api.DeviceMotionEvent

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

### api.DeviceMotionEventAcceleration

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

### api.DeviceMotionEventRotationRate

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

関連情報
----

* Device Orientation & Motion (web.dev)
FontFace
========

**`FontFace`** は CSS フォント読み込み API のインターフェイスで、単一の使用可能なフォントフェイスを表します。

 このインターフェイスは、フォントフェイスのソース（外部リソースへの URL またはバッファー）と、`style` や `weight` などのフォントプロパティを定義します。
 URL フォントのソースの場合、リモートフォントが取得され読み込まれたときに発生させたり、読み込み状況を追跡したりすることができます。

コンストラクター
--------

`FontFace()`

新しい `FontFace` オブジェクトを、 URL で記述されている外部リソースまたは `ArrayBuffer` から構築して返します。

インスタンスプロパティ
-----------

`FontFace.ascentOverride`

フォントのアセンダーの寸法を取得または設定する文字列です。これは `ascent-override` 記述子と等価です。

`FontFace.descentOverride`

フォントのディセンダーの寸法を取得または設定する文字列です。これは `descent-override` 記述子と等価です。

`FontFace.display`

フォントがダウンロードされ、使用する準備ができているかどうかによって、フォントフェイスがどのように表示されるかを決定する文字列。

`FontFace.family`

フォントのファミリを取得または設定する文字列です。これは `font-family` 記述子と等価です。

`FontFace.featureSettings`

フォントの variant プロパティでは利用できない、使用する頻度の低いフォント特性を取得または設定する文字列です。 CSS の `font-feature-settings` プロパティと等価です。

`FontFace.lineGapOverride`

フォントの行ギャップの寸法を取得または設定するには文字列を指定します。これは `line-gap-override` 記述子と等価です。

`FontFace.loaded` 読取専用 

`Promise` を返します。これは、オブジェクトのコンストラクターで指定したフォントを読み込みに完了した場合に、現在の `FontFace` オブジェクトで解決したり、 `SyntaxError` `DOMException` で拒否されたりします。

`FontFace.status` 読取専用 

フォントの状態を示す列挙値 `"unloaded"`、`"loading"`、`"loaded"`、`"error"` のいずれかを返します。

`FontFace.stretch`

文字列で、フォントがどのように伸縮するかを取得または設定します。これは `font-stretch` 記述子と同等です。

`FontFace.style`

文字列で、フォントのスタイルを取得または設定します。これは `font-style` 記述子と等価です。

`FontFace.unicodeRange`

文字列で、フォントを包含する Unicode コードポイントの範囲を取得または設定します。これは `unicode-range` 記述子と等価です。

`FontFace.variant`

文字列で、フォントのバリアントを取得または設定します。

`FontFace.variationSettings` 
Experimental

文字列で、フォントのバリエーション設定を取得または設定します。これは `font-variation-settings` 記述子と等価です。

`FontFace.weight`

文字列で、フォントの太さが入ります。これは `font-weight` 記述子と等価です。

`FontFace.load()`

現在のオブジェクトのコンストラクターに渡された要求（場所または元のオブジェクト内のバッファーも含む）に基づいてフォントを読み込み、現在の FontFace オブジェクトに解決する `Promise` を返します。

例
-

 下記のコードでは、URL "myfont.woff" のデータといくつかのフォント記述子を使用してフォントフェイスを定義しています。
 これがどのように動作するのかを示すために、プロパティを使用して `stretch` 記述子を定義しています。


```js
// FontFace を定義
const font = new FontFace("myfont", "url(myfont.woff)", {
  style: "italic",
  weight: "400",
});

font.stretch = "condensed";
```


次に、 `FontFace.load()` を使ってフォントを読み込み、返すプロミスを使用して完了を追跡したり、エラーを報告したりします。


```js
// フォントを読み込む
font.load().then(
  () => {
    // 解決 - document.fonts にフォントを追加
  },
  (err) => {
    console.error(err);
  },
);
```


 実際にフォントを使用するには、 `FontFaceSet` に追加する必要があります。
 これはフォントを読み込む前でも後でもできます。

それ以外の例は、 CSS フォント読み込み API > 例を参照してください。

仕様書
---

| Specification |
| --- |
| CSS Font Loading Module Level 3 # fontface-interface |

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

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

関連情報
----

* @font-face
self.crypto
===========

グローバルの **`crypto`** プロパティは読み取り専用で、グローバルオブジェクトに関連付けられた `Crypto` オブジェクトを返します。このオブジェクトは、ウェブページが暗号に関連したサービスにアクセスできるようにします。

このプロパティ自体は読み取り専用ですが、そのメソッドすべて（加えて子オブジェクトのメソッドと `SubtleCrypto`）は読み取り専用ではありません。そのためポリフィルによる攻撃には脆弱です。

`crypto` はすべてのウィンドウで使用できますが、返される `Crypto` オブジェクトは安全でないコンテキストで使用できる機能は 1 つしかありません。 `getRandomValues()` メソッドです。一般的に、この API は安全なコンテキストでのみ使用する必要があります。

構文
--

`Crypto` インターフェイスのインスタンスで、一般用途の暗号技術と強力な乱数生成器を提供します。

例
-

この例では、 `crypto` プロパティを使用して `getRandomValues()` メソッドへアクセスします。

### JavaScript


```js
genRandomNumbers = function getRandomNumbers() {
  const array = new Uint32Array(10);
  crypto.getRandomValues(array);

  const randText = document.getElementById("myRandText");
  randText.textContent = "乱数: ";
  for (let i = 0; i < array.length; i++) {
    randText.textContent += array[i] + " ";
  }
};
```

### HTML


```html
<p id="myRandText">乱数:</p>
<button type="button" onClick="genRandomNumbers()">10 個の乱数を生成</button>
```

### 結果

仕様書
---

| Specification |
| --- |
| Web Cryptography API # dom-windoworworkerglobalscope-crypto |

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

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

関連情報
----

* `Window` グローバルオブジェクト
* `Crypto` インターフェイス
NodeList
========

**`NodeList`** オブジェクトはノードの集合であり、 `Node.childNodes` などのプロパティや `document.querySelectorAll()` などのメソッドの返値として用いられます。

**メモ:** `NodeList` は `Array` とは異なりますが、`forEach()` メソッドで処理を反復適用することは可能です。`Array.from()` を使うことで `Array` に変換することができます。

生きた NodeList と静的な NodeList
--------------------------

NodeList には *生きた* ものと *静的な* ものの 2 種類のものがありますが、どちらも `NodeList` と考えられています。

### 生きた NodeList

場合によっては `NodeList` は *生きた* ものになります。DOM が変化すると、自動的に集合が更新されることを意味しています。

For example, `Node.childNodes` is live:


```js
const parent = document.getElementById("parent");
let childNodes = parent.childNodes;
console.log(childNodes.length); // "2" と仮定すると
parent.appendChild(document.createElement("div"));
console.log(childNodes.length); // "3" が出力される
```

### 静的な NodeList

一方、 `NodeList` が *静的な* ものである場合があります。この場合は、DOM 内の変更が集合の内容に影響を与えません。`document.querySelectorAll()` メソッドは、静的な `NodeList` を返します。

`NodeList` の各要素に反復処理を行う方法を選択したり、リストの長さをキャッシュしたりする場合は、この違いを考えておくといいでしょう。

インスタンスプロパティ
-----------

`NodeList.length`

`NodeList` に含まれるノードの数です。

インスタンスメソッド
----------

`NodeList.item()`

指定されたインデックスに対応するリスト内の要素を返します。インデックスが範囲外の場合は `null` を返します。

`nodeList[i]` のアクセスの代替手段です（この場合、`i` が範囲外の時には `undefined` が返ります）。これは JavaScript 以外の言語による DOM の実装で便利です。

`NodeList.entries()`

`イテレーター`を返し、これによってコードが集合に含まれているキーと値のペアを走査することができます。 (この場合、キーは 0 から始まる数値で値はノードです。)

`NodeList.forEach()`

指定された関数を `NodeList` の各要素に対して実行し、その要素を関数の引数として渡します。

`NodeList.keys()`

`イテレーター`を返し、これによってコードが集合に含まれているキーと値のペアのキーを走査することができます。（この場合、キーは 0 から始まる数値です。）

`NodeList.values()`

`イテレーター`を返し、これによってコードが集合に含まれているキーと値のペアの値（ノード）を走査することができます。

例
-

`NodeList` の中のアイテムは、for ループで走査することができます。


```js
for (let i = 0; i < myNodeList.length; i++) {
  let item = myNodeList[i];
}
```


リストの要素について処理を回すために `for...in` を使用しないでください。`NodeList` のプロパティである要素に加えて、 `length` や `item` プロパティについても処理が適用されるため、 `element` オブジェクトのみ処理すべきスクリプトではエラーが生じます。また、`for...in` で取得されるプロパティの順番は保証されていません。

`for...of` ループであれば、`NodeList` オブジェクトを正しく扱うことができます。


```js
const list = document.querySelectorAll("input[type=checkbox]");
for (const checkbox of list) {
  checkbox.checked = true;
}
```


最近のブラウザーでは、イテレーターに基づくメソッドとして `forEach()`, `entries()`, `values()`, `keys()` に対応しています。

仕様書
---

| Specification |
| --- |
| DOM Standard # interface-nodelist |

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

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

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

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

Storage API の **`StorageManager`** インターフェイスは、永続性のパーミッションの管理と、利用可能なストレージの見積もりのインターフェイスを提供します。`navigator.storage` (en-US) か `WorkerNavigator.storage` のいずれかを使用して、このインターフェイスへの参照を取得できます。

メソッド
----

`StorageManager.estimate()` 安全なコンテキスト用

オリジンの使用量とクォータを含む `StorageEstimate` オブジェクトを返します。

`StorageManager.persist()` 安全なコンテキスト用

ユーザーエージェントがサイトのストレージを永続化できる場合に `true` に解決される `Promise` を返します。

`StorageManager.persisted()` 安全なコンテキスト用

サイトのストレージに永続性がすでに付与されている場合に `true` に解決される `Promise` を返します。

仕様
--

| Specification |
| --- |
| Storage Standard # storagemanager |

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

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

**`HTMLHRElement`** インターフェイスは、（継承によって利用できる通常の `HTMLElement` インターフェイスの他に） `<hr>` 要素を操作するための特別なプロパティを提供します。

EventTarget

Node

Element

HTMLElement

HTMLHRElementプロパティ
-----

*親である `HTMLElement` から継承したプロパティもあります。*

`HTMLHRElement.align` 
非推奨

文字列で、この区切り線の周囲のコンテキストに対する配置を示す列挙型の属性です。

`HTMLHRElement.color` 
非推奨

文字列で、この区切り線の色の名前を表します。

`HTMLHRElement.noshade` 
非推奨

論理値で、この区切り線に陰影をつけないことを設定します。

`HTMLHRElement.size` 
非推奨

文字列で、この区切り線の高さを表します。

`HTMLHRElement.width` 
非推奨

文字列で、この区切り線のページ上での幅を表します。

メソッド
----

*独自のメソッドはありません。親である `HTMLElement` から継承したメソッドがあります。*

仕様書
---

| Specification |
| --- |
| HTML Standard # htmlhrelement |

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

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

関連情報
----

* このインターフェイスを実装している HTML 要素: `<hr>`
HTMLAudioElement
================

**`HTMLAudioElement`** インターフェイスは `<audio>` 要素のプロパティと、操作するメソッドへのアクセスを提供します。

この要素は `HTMLMediaElement` インターフェイスから派生しており、プロパティとメソッドを継承しています。

EventTarget

Node

Element

HTMLElement

HTMLMediaElement

HTMLAudioElementコンストラクター
--------

`Audio()`

新しい `HTMLAudioElement` オブジェクトを作成し、返します。オプションとして、ファイルの URL が指定された場合は、音声ファイルを読み込む処理を開始します。

インスタンスプロパティ
-----------

*固有のプロパティはありません。親である `HTMLMediaElement` および `HTMLElement` からプロパティを継承しています。*

インスタンスメソッド
----------

*`HTMLMediaElement` および `HTMLElement` からメソッドを継承しています。*

例
-

### 基本的な使用

`Audio()` を使用すると、`HTMLAudioElement` を完全に JavaScript で生成することができます。


```js
const audioElement = new Audio("car\_horn.wav");
```


それからこの要素に対して `play()` を呼び出すことができます。


```js
audioElement.play();
```


**メモ:** よくあるのが、ページを読み込んだらすぐに audio 要素を再生しようとすることです。現代のブラウザーは、既定の自動再生ポリシーによって、このようなことが起こらないようにブロックしています。良い習慣と回避方法については、Firefox および Chrome のものを参照してください。

audio 要素のプロパティとしてよく用いられるものには、`src`, `currentTime`, `duration`, `paused`, `muted`, `volume` などがあります。このスニペットは、音声ファイルの再生時間を変数にコピーします。


```js
const audioElement = new Audio("car\_horn.wav");
audioElement.addEventListener("loadeddata", () => {
  let duration = audioElement.duration;
  // これで変数 duration に音声クリップの再生時間（2 つ目）が格納される
});
```

イベント
----

*親である `HTMLMediaElement` およびその祖先である `HTMLElement` からイベントを継承しています。* イベントを待ち受けするには、`addEventListener()` を使用するか、このインターフェイスの `onイベント名` プロパティにイベントリスナーを代入してください。

仕様書
---

| Specification |
| --- |
| HTML Standard # htmlaudioelement |

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

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

関連情報
----

* ウェブメディア技術
* HTML での音声と動画の使用
* このインタフェースを実装した HTML 要素: `<audio>`
NodeIterator
============

**`NodeIterator`** インターフェイスは、DOM のサブツリー内に存在するノードのリストのメンバーに対するイテレーターを表します。ノードは文書内に現れる順番で返されます。

構文
--

`NodeIterator` は、以下のように `Document.createNodeIterator()` メソッドを用いて作成することができます。


```js
const nodeIterator = document.createNodeIterator(root, whatToShow, filter);
```

プロパティ
-----

*このインターフェイスが継承するプロパティはありません。*

`NodeIterator.root` (en-US) 読取専用 

`NodeIterator` を作成したときに指定したルートノードを表す `Node` を返します。

`NodeIterator.whatToShow` (en-US) 読取専用 

提供しなければならない `Node` の型を表す定数で構成されるビットマスクである `unsigned long` を返します。一致しないノードはスキップされますが、その子は関連があれば含まれます。

使用できる値は以下のとおりです。

| 定数 | 数値 | 説明 |
| --- | --- | --- |
| `NodeFilter.SHOW_ALL` | `4294967295` （すなわち `unsigned long` の最大値） | すべてのノードを表示します。 |
| `NodeFilter.SHOW_ATTRIBUTE` 
非推奨
 | `2` | 属性の `Attr` ノードを表示します。これはルートとして `Attr` を含む `NodeIterator` を作成する場合に限り、意味があります。この場合は、反復処理や走査の最初の位置に属性ノードが現れることを意味します。属性はほかのノードの子ではありませんので、文書ツリーを走査するときは出現しません。 |
| `NodeFilter.SHOW_CDATA_SECTION` 
非推奨
 | `8` | `CDATASection` ノードを表示します。 |
| `NodeFilter.SHOW_COMMENT` | `128` | `Comment` ノードを表示します。 |
| `NodeFilter.SHOW_DOCUMENT` | `256` | `Document` ノードを表示します。 |
| `NodeFilter.SHOW_DOCUMENT_FRAGMENT` | `1024` | `DocumentFragment` ノードを表示します。 |
| `NodeFilter.SHOW_DOCUMENT_TYPE` | `512` | `DocumentType` ノードを表示します。 |
| `NodeFilter.SHOW_ELEMENT` | `1` | `Element` ノードを表示します。 |
| `NodeFilter.SHOW_ENTITY` 
非推奨
 | `32` | 古いもので、もう使用されません。 |
| `NodeFilter.SHOW_ENTITY_REFERENCE` 
非推奨
 | `16` | 古いもので、もう使用されません。 |
| `NodeFilter.SHOW_NOTATION` 
非推奨
 | `2048` | 古いもので、もう使用されません。 |
| `NodeFilter.SHOW_PROCESSING_INSTRUCTION` | `64` | `ProcessingInstruction` ノードを表示します。 |
| `NodeFilter.SHOW_TEXT` | `4` | `Text` ノードを表示します。 |

`NodeIterator.filter` (en-US) 読取専用 

関連するノードを選択するために使用した `NodeFilter` (en-US) を返します。

`NodeIterator.referenceNode` (en-US) 読取専用 

Experimental

イテレーターが結び付けられている `Node` を返します。

`NodeIterator.pointerBeforeReferenceNode` (en-US) 読取専用  
Experimental

論理値のフラグで、 `NodeIterator` が前に固定されるかどうかを示します。前に固定される場合は `true`、後に固定される場合は `false` になります。

メソッド
----

*このインターフェイスが継承するメソッドはありません。*

`NodeIterator.detach()` (en-US) 
非推奨

これは無操作です。です。これは何も行いません。以前は `NodeIterator` を使用しなくなったことをエンジンに伝えていましたが、現在は不要です。

`NodeIterator.previousNode()` (en-US)

文書内で前の `Node` を返します。ノードがない場合は `null` を返します。

`NodeIterator.nextNode()` (en-US)

文書内で次の `Node` を返します。ノードがない場合は `null` を返します。

仕様書
---

| Specification |
| --- |
| DOM Standard # interface-nodeiterator |

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

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

関連情報
----

* 作成するメソッド: `Document.createNodeIterator()`
* 関連インターフェイス
    + `NodeFilter` (en-US)
    + `TreeWalker`
CSSConditionRule
================

**`CSSConditionRule`** インターフェイスを自訴すしているオブジェクトは、条件と文のブロックからなる単一の条件付き CSS アットルールを表します。

`CSSConditionRule` からは `CSSMediaRule` と `CSSSupportsRule` の 2 つのオブジェクトが派生しています。

CSSRule

CSSGroupingRule

CSSConditionRuleプロパティ
-----

*祖先である `CSSRule` および `CSSGroupingRule` から継承したプロパティもあります。*

`CSSConditionRule.conditionText`

ルールの条件となるテキストを表します。

メソッド
----

独自のメソッドはありません。祖先である `CSSRule` および `CSSGroupingRule` から継承したメソッドがあります。

仕様書
---

| Specification |
| --- |
| CSS Conditional Rules Module Level 3 # the-cssconditionrule-interface |

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

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

関連情報
----

* 動的なスタイル情報の使用
バッテリー状態 API
===========

**バッテリー状態 API** は、 **バッテリー API** と呼ばれることの方が多いのですが、システムのバッテリー充電レベルに関する情報の提供、およびバッテリーレベルや充電状態が変化したときに発生するイベントによる通知を可能にします。これは、バッテリーが消耗したときにバッテリー消費を減らすためアプリのリソース使用状況を調整したり、データを失わないためにバッテリーが切れる前に変更点を保存したりするために使用できます。

**メモ:** この API はウェブワーカー では利用できません（`WorkerNavigator` には公開されていません）。

インターフェイス
--------

`BatteryManager` (en-US)

システムのバッテリー充電レベルに関する情報を提供します。

`navigator.getBattery()` 読取専用 

`Promise` を返します。これは `BatteryManager` (en-US) オブジェクトで解決します。

例
-

以下の例では、充電状況（電源に接続して充電中であるか）の変化およびバッテリーレベルの変化およびタイミングを監視します。これは、 `chargingchange` (en-US), `levelchange` (en-US), `chargingtimechange` (en-US), `dischargingtimechange` (en-US) の各イベントをそれぞれ待ち受けすることによって実現します。


```js
navigator.getBattery().then((battery) => {
  function updateAllBatteryInfo() {
    updateChargeInfo();
    updateLevelInfo();
    updateChargingInfo();
    updateDischargingInfo();
  }
  updateAllBatteryInfo();

  battery.addEventListener("chargingchange", () => {
    updateChargeInfo();
  });
  function updateChargeInfo() {
    console.log(`Battery charging? ${battery.charging ? "Yes" : "No"}`);
  }

  battery.addEventListener("levelchange", () => {
    updateLevelInfo();
  });
  function updateLevelInfo() {
    console.log(`Battery level: ${battery.level \* 100}%`);
  }

  battery.addEventListener("chargingtimechange", () => {
    updateChargingInfo();
  });
  function updateChargingInfo() {
    console.log(`Battery charging time: ${battery.chargingTime} seconds`);
  }

  battery.addEventListener("dischargingtimechange", () => {
    updateDischargingInfo();
  });
  function updateDischargingInfo() {
    console.log(`Battery discharging time: ${battery.dischargingTime} seconds`);
  }
});
```


仕様書に記載されているサンプルもご覧ください。

仕様書
---

| Specification |
| --- |
| Battery Status API  |

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

### api.BatteryManager

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

### api.Navigator.getBattery

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

関連情報
----

* Hacks blog post - Using the Battery API
Crypto
======

**`Crypto`** インターフェイスは、現在のコンテキストで利用できる基本的な暗号機能を表します。
 これは、暗号強度の強い乱数生成器と暗号プリミティブへのアクセスを許可します。

**注:** この機能は Web Worker 内で利用可能です

ウェブ暗号 API はグローバルの `crypto` プロパティからアクセスすることができ、これが `Crypto` オブジェクトです。

インスタンスプロパティ
-----------

*このインターフェイスは、 `RandomSource` 上に定義されたプロパティを実装します。*

`Crypto.subtle` 読取専用  安全なコンテキスト用

ハッシュや署名、暗号化、復号など、共通の暗号プリミティブへのアクセスを提供する `SubtleCrypto` オブジェクトを返します。

インスタンスメソッド
----------

*このインターフェイスは、 `RandomSource` 上に定義されたメソッドを実装します。*

`Crypto.getRandomValues()`

渡された `TypedArray` を暗号強度の強い乱数値で埋めます。

`Crypto.randomUUID()`

ランダムに生成された 36 文字の v4 UUID を返します。

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

 ウェブ暗号 API は、安全でないコンテキスト上で使用するのは避けるべきです。 `Crypto` インターフェイスが安全でないコンテキスト上に存在しいたとしてもです。
 さらに、 `Crypto` の `getRandomValues()` メソッドは安全でないコンテキストでも使用できますが、 `subtle` プロパティは使用できません。

一般的には、 `Crypto` は安全なコンテキストでのみ使用できるものとして扱うべきでしょう。

仕様書
---

| Specification |
| --- |
| Web Cryptography API # crypto-interface |

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

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

関連情報
----

* ウェブセキュリティ
* 安全なコンテキスト
* 安全なコンテキストに制限されている機能
* Transport Layer Security
* Strict-Transport-Security
FileSystemHandle
================

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

`File System Access API` の **`FileSystemHandle`** インターフェイスは、ファイルまたはディレクトリーのエントリーを表すオブジェクトです。複数のハンドルが同じエントリーを表す可能性もあります。`FileSystemHandle` を直接扱う場面はほとんどなく、子インターフェイスの `FileSystemFileHandle` や `FileSystemDirectoryHandle` を扱うでしょう。

FileSystemHandle がもととなるインターフェイス
-------------------------------

以下が、`FileSystemHandle` インターフェイスがもととなっているインターフェイスの一覧です。

`FileSystemFileHandle`

ファイルエントリーのハンドルを表します。

`FileSystemDirectoryHandle`

ディレクトリーエントリーへのハンドルを提供します。

インスタンスプロパティ
-----------

`kind` 読取専用 

エントリーの種類を返します。`'file'` (対応するエントリーがファイルのとき) または `'directory'` です。

`name` 読取専用 

対応するエントリーの名前を返します。

インスタンスメソッド
----------

`isSameEntry()`

2 個の`ハンドル`を比較し、対応するエントリー (ファイルまたはディレクトリー) が一致するかを調べます。

`queryPermission()` 
Experimental

現在のハンドルの現在の許可の状態を取得します。

`remove()` 
Experimental

Non-standard

下層のファイルシステムからハンドルが表すエントリーを除去することを要求します。

`requestPermission()` 
Experimental

ファイルハンドルについて、読み取りまたは読み書きの許可を要求します。

例
-

### 種類を調べる

以下のコードでは、ユーザーにファイルピッカーでファイルを選択させ、返されたハンドルがファイルなのかディレクトリーなのかを調べます。


```js
// ファイルハンドルへの参照を保存する
let fileHandle;

async function getFile() {
  // ファイルピッカーを開く
  [fileHandle] = await window.showOpenFilePicker();

  if (fileHandle.kind === "file") {
    // ファイルの場合のコードを実行する
  } else if (fileHandle.kind === "directory") {
    // ディレクトリーの場合のコードを実行する
  }
}
```

### 許可を確認 / 要求する

以下の非同期関数は、ユーザーがファイルハンドルに読み取りまたは読み書きの許可を与えている場合 `true` を返します。許可が与えられていない場合、許可を要求します。


```js
// fileHandle は FileSystemFileHandle
// withWrite は書き込みなら true に設定される boolean

async function verifyPermission(fileHandle, withWrite) {
  const opts = {};
  if (withWrite) {
    opts.mode = "readwrite";
  }

  // 既に許可が得られているかを確認し、許可が得られていれば true を返す
  if ((await fileHandle.queryPermission(opts)) === "granted") {
    return true;
  }

  // ファイル操作の許可を要求し、ユーザーが許可すれば true を返す
  if ((await fileHandle.requestPermission(opts)) === "granted") {
    return true;
  }

  // ユーザーが許可しなかったので、false を返す
  return false;
}
```

### エントリーを比較する

以下の関数は、1 個のエントリーをエントリーの配列と比較し、一致するエントリーをすべて取り除いた新しい配列を返します。


```js
function removeMatches(fileEntry, entriesArr) {
  const newArr = entriesArr.filter((entry) => !fileEntry.isSameEntry(entry));

  return newArr;
}
```

仕様書
---

| Specification |
| --- |
| File System Standard # api-filesystemhandle |

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

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

関連情報
----

* File System Access API
* The File System Access API: simplifying access to local files