recursal/MDN huggingface dataset:
Range: comparePoint() メソッド
==========================

**`Range.comparePoint()`** メソッドは、 `-1`、`0`、`1` を返します。それぞれ、 `referenceNode` が `Range` の前か、同じか、後かを返します。

参照ノードが `Text`、`Comment`、`CDATASection`型の `Node` の場合、 offset は参照ノードの先頭からの文字数です。他の `Node` 型の場合、 offset は参照ノードの先頭からの子ノードの数です。

構文
--


```js
comparePoint(referenceNode, offset)
```

### 引数

`referenceNode`

`Range` と比較する `Node` です。

`offset`

0 以上の整数で、 *referenceNode* 内のオフセットを表します。

### 返値

Returns `-1`, `0`, or `1`.

例
-


```js
range = document.createRange();
range.selectNode(document.getElementsByTagName("div").item(0));
returnValue = range.comparePoint(document.getElementsByTagName("p").item(0), 1);
```

仕様書
---

| Specification |
| --- |
| DOM Standard # ref-for-dom-range-comparepoint① |

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

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

関連情報
----

* DOM インターフェイス索引
Range: Range() コンストラクター
=======================

**`Range()`** コンストラクターは、グローバルな `Document` オブジェクトを始点および終点とする、新しく作成された `Range` オブジェクトを返します。

構文
--


```js
new Range()
```

### 引数

なし。

例
-

この例では、 `Range()` コンストラクターで新しい範囲を作成し、 `Range.setStartBefore()` メソッドと `Range.setEndAfter()` メソッドを使用してその開始位置と終了位置を設定します。そして、 `window.getSelection()` と `Selection.addRange()` (en-US) を使用して範囲を選択します。

### HTML


```html
<p>First paragraph.</p>
<p>Second paragraph.</p>
<p>Third paragraph.</p>
<p>Fourth paragraph.</p>
```

### JavaScript


```js
const paragraphs = document.querySelectorAll("p");

// 新しい範囲を作成
const range = new Range();

// 範囲を 2 つ目の段落から開始
range.setStartBefore(paragraphs[1]);

// 範囲を 3 つ目の段落で終了
range.setEndAfter(paragraphs[2]);

// window の選択範囲を取得
const selection = window.getSelection();

// window の選択範囲に範囲を追加
selection.addRange(range);
```

### 結果

仕様書
---

| Specification |
| --- |
| DOM Standard # ref-for-dom-range-range② |

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

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

関連情報
----

* DOM インターフェイス索引
* `Document.createRange()`
Range: endOffset プロパティ
======================

**`Range.endOffset`** は読み取り専用プロパティで、 `Range.endContainer` の `Range` が終了する場所を表す数値を返します。

もし `endContainer` が `Text`, `Comment`, `CDATASection` 型のノード (`Node`) であれば、オフセットとは `endContainer` の先頭から `Range` の境界までの文字数です。その他の `Node` 型の場合、 `endOffset` は `endContainer` の開始点から `Range` の境界点までの子ノードの数となります。このプロパティは読み取り専用です。 `Range` の `endOffset` を変更するには、 `Range.setEnd` 系メソッドのいずれかを使用してください。

値
-

数値です。

例
-


```js
const range = document.createRange();

range.setStart(startNode, startOffset);
range.setEnd(endNode, endOffset);
endRangeOffset = range.endOffset;
```

仕様書
---

| Specification |
| --- |
| DOM Standard # ref-for-dom-range-endoffset① |

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

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

関連情報
----

* DOM インターフェイス索引
Range: surroundContents() メソッド
==============================

**`Range.surroundContents()`** メソッドは `Range` の内容を新しいノードに移動し、新しいノードを指定された範囲の先頭に配置します。

 このメソッドは `newNode.appendChild(range.extractContents()); range.insertNode(newNode)` とほぼ同じです。
 囲んだ後の `range` の境界点は `newNode` を含みます。

ただし、`Range` が`Text` でないノードをその境界点の 1 つだけで分割した場合は例外が発生します。つまり、上記の代案とは異なり、部分的に選択されたノードがある場合、それらのノードは複製されず、代わりに処理が失敗します。

構文
--


```js
surroundContents(newParent)
```

### 引数

`newParent`

コンテンツを囲む`Node` です。

### 返値

なし (`undefined`)。

例
-

### HTML


```html
<span class="header-text">Put this in a headline</span>
```

### JavaScript


```js
const range = document.createRange();
const newParent = document.createElement("h1");

range.selectNode(document.querySelector(".header-text"));
range.surroundContents(newParent);
```

### 結果

仕様書
---

| Specification |
| --- |
| DOM Standard # dom-range-surroundcontents |

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

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

関連情報
----

* DOM インターフェイス索引
Range: endContainer プロパティ
=========================

**`Range.endContainer`** は読み取り専用プロパティで、 `Range` の終了位置にあるノード (`Node`) を返します。ノードの終了位置を変更するために `Range.setEnd()` または同様のメソッドを利用します。

値
-

`Node` オブジェクト。

例
-


```js
const range = document.createRange();

range.setStart(startNode, startOffset);
range.setEnd(endNode, endOffset);
endRangeNode = range.endContainer;
```

仕様書
---

| Specification |
| --- |
| DOM Standard # ref-for-dom-range-endcontainer① |

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

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

関連情報
----

* DOM インターフェイス索引
Range: startOffset プロパティ
========================

**`Range.startOffset`** は読み取り専用プロパティで、 `startContainer` の `Range` の開始位置を表す数値を返します。

`startContainer` の `Node` が `Text`、`Comment`、`CDATASection` 型であった場合、そのオフセットは `startContainer` の先頭から `Range` の境界点までの文字数です。他の `Node` 型の場合、 `startOffset` は `startContainer` の開始点と `Range` の境界点の間の子ノードの数です。

`Range` の `startOffset` を変更するには、 `Range.setStart` メソッドを使用してください。

値
-

数値です。

例
-


```js
const range = document.createRange();
range.setStart(startNode, startOffset);
range.setEnd(endNode, endOffset);
const startRangeOffset = range.startOffset;
```

仕様書
---

| Specification |
| --- |
| DOM Standard # ref-for-dom-range-startoffset① |

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

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

関連情報
----

* DOM インターフェイス索引
Range: intersectsNode() メソッド
============================

**`Range.intersectsNode()`** メソッドは、指定された `Node` が `Range` と交差しているかどうかを示す論理値を返します。

構文
--


```js
intersectsNode(referenceNode)
```

### 引数

`referenceNode`

この `Range` と比較する `Node` です。

### 返値

論理値です。

例
-


```js
const range = document.createRange();

range.selectNode(document.getElementsByTagName("div").item(0));
const intersectingNode = range.intersectsNode(
  document.getElementsByTagName("p").item(0),
);
```

仕様書
---

| Specification |
| --- |
| DOM Standard # ref-for-dom-range-intersectsnode① |

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

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

関連情報
----

* DOM インターフェイスの索引
WritableStreamDefaultController: signal プロパティ
=============================================

**`signal`** は `WritableStreamDefaultController` インターフェイスの読み取り専用プロパティで、このコントローラーに関連付けられた `AbortSignal` を返します。

値
-

`AbortSignal` オブジェクトです。

例
-

### 長い書き込み操作の中止

この例では、ローカルシンクを使用して低速処理をシミュレーションします。データが書き込まれたら何もしませんが、少し待ちます。これにより、 `writer.abort()` メソッドを呼び出してプロミスを即座に拒否するのに十分な時間が得られます。


```js
const writingStream = new WritableStream({
  // 長い処理をシミュレーションするために、低速ローカルシンクを定義します。
  write(controller) {
    return new Promise((resolve, reject) => {
      controller.signal.addEventListener("abort", () =>
        reject(controller.signal.reason),
      );

      // 何もせずにローカルシンクのデータで待ちます。
      setTimeout(resolve, 1000); // 低速処理をシミュレーションするタイムアウト
    });
  },
});

// 書き込みを実行
const writer = writingStream.getWriter();
writer.write("Lorem ipsum test data");

// 手動で書き込みを中止
await writer.abort("Manual abort!");
```

### `AbortSignal` を下層レイヤーへ移譲

この例では、フェッチ API を使用して、実際にメッセージをサーバーに送信しています。フェッチ API は `AbortSignal` にも対応しています。 `fetch` メソッドと `WritableStreamDefaultController` の両方に同じオブジェクトを使用することが可能です。


```js
const endpoint = "https://www.example.com/api"; // デモ用の架空の URL
const writingStream = new WritableStream({
  async write(chunk, controller) {
    // Write to the server using the Fetch API
    const response = await fetch(endpoint, {
      signal: controller.signal, // fetch と controller の両方で同じオブジェクトを使用
      method: "POST",
      body: chunk,
    });
    await response.text();
  },
});

// 書き込みを実行
const writer = writingStream.getWriter();
writer.write("Lorem ipsum test data");

// 手動で書き込みを中止
await writer.abort("Manual abort!");
```

仕様書
---

| Specification |
| --- |
| Streams Standard # ref-for-ws-default-controller-signal① |

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

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

`WritableStreamDefaultController` インターフェイスの **`error()`** メソッドにより、関連するストリームとの今後のやり取りがエラーになります。

通常、基になるシンクのメソッドの 1 つから拒否されたプロミスを返すだけで十分なため、このメソッドはほとんど使用されません。 ただし、基になるシンクとのやり取りの通常のライフサイクル外のイベントに応答して、ストリームを突然シャットダウンする場合に役立ちます。

構文
--


```js
error(message)
```

### 引数

`message`

文字列で、将来の操作を失敗するようにしたいエラーを表します。

### 返値

なし (`undefined`)。

### 例外

`TypeError`

エラーにしようとしているストリームは `WritableStream` ではありません。

例
-


```js
const writableStream = new WritableStream({
  start(controller) {
    // コントローラーで何かをする

    // 必要に応じてストリームをエラーにする
    controller.error("My error is broken");
  },
  write(chunk, controller) {
    // ...
  },
  close(controller) {
    // ...
  },
  abort(err) {
    // ...
  },
});
```

仕様書
---

| Specification |
| --- |
| Streams Standard # ref-for-ws-default-controller-error① |

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

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

**`Gamepad.axes`** は `Gamepad` インターフェイスのプロパティで、機器（例えばアナログスティック）上に存在する軸を持つコントロールを表す配列を返します。

配列の各要素は -1.0 〜 1.0 の範囲の浮動小数点値で、最小値 (-1.0) から最大値 (1.0) までの軸の位置を表します。

値
-

数値の配列です。

例
-


```js
function gameLoop() {
  const [gp] = navigator.getGamepads();

  let a = 0;
  let b = 0;
  if (gp.axes[0] !== 0) {
    b -= gp.axes[0];
  } else if (gp.axes[1] !== 0) {
    a += gp.axes[1];
  } else if (gp.axes[2] !== 0) {
    b += gp.axes[2];
  } else if (gp.axes[3] !== 0) {
    a -= gp.axes[3];
  }

  ball.style.left = `${a \* 2}px`;
  ball.style.top = `${b \* 2}px`;

  const start = requestAnimationFrame(gameLoop);
}
```

仕様書
---

| Specification |
| --- |
| Gamepad # dom-gamepad-axes |

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

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

関連情報
----

ゲームパッド API の使用
Gamepad: hapticActuators プロパティ
==============================

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

**`hapticActuators`** は `Gamepad` インターフェイスの読み取り専用プロパティで、 `GamepadHapticActuator` オブジェクトを含む配列を返します。各オブジェクトは、コントローラーで利用可能な触覚フィードバックハードウェアを表します。

### 値

`GamepadHapticActuator` オブジェクトを含む配列。

例
-


```js
const gamepad = navigator.getGamepads()[0];

gamepad.hapticActuators[0].pulse(1.0, 200);
```

仕様書
---

| Specification |
| --- |
| Gamepad Extensions # dom-gamepad-hapticactuators |

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

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

関連情報
----

* ゲームパッド API
Gamepad: displayId プロパティ
========================

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

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

**`displayId`** は `Gamepad` インターフェイスの読み取り専用プロパティで、 `VRDisplay` に関連付けられた `VRDisplay.displayId` を返します。 `VRDisplay` は表示されるシーンをそのゲームパッドで操作します。

ゲームパッドは、ディスプレイのポーズと同じ空間にあるポーズを報告すると、 `VRDisplay` と関連していると見なされます。`VRDisplay.getPose` を参照してください。

**メモ:** このプロパティは、古い WebVR API に含まれていました。 WebXR Gamepads Module に取って代わられました。

このプロパティを直接置き換えるものはありません。 `XRInputSource` に関連付けられた `Gamepad` オブジェクトは、 `XRInputSource.gamepad` プロパティを使用して取得することができます。

値
-

関連する `VRDisplay.displayId` を表す数値です。 0 の場合、ゲームパッドは VR ディスプレイと関連付けられていません。

例
-


```js
window.addEventListener("gamepadconnected", (e) => {
  if (!e.gamepad.displayId) {
    console.log("Gamepad connected");
  } else {
    console.log(
      `Gamepad connected, associated with VR display ${e.gamepad.displayId}`,
    );
  }
});
```

仕様書
---

このインターフェイスは、古い WebVR API の一部でしたが、 WebXR 機器 API に置き換えられました。標準化される予定はありません。

すべてのブラウザーが新しい WebXR API を実装するまで、すべてのブラウザーで動作する WebXR アプリケーションを開発するには、A-Frame や Babylon.js や Three.js などのフレームワークを利用したり、ポリフィルを利用したりすると良いでしょう [1]。

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

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

関連情報
----

* WebVR API
Gamepad: vibrationActuator プロパティ
================================

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

**`vibrationActuator`** は `Gamepad` インターフェイスの読み取り専用プロパティで、このコントローラーで利用できる触覚フィードバックハードウェアを表す `GamepadHapticActuator` オブジェクトを返します。

値
-

`GamepadHapticActuator` オブジェクトです。

例
-


```js
const gamepad = navigator.getGamepads()[0];

gamepad.vibrationActuator.playEffect("dual-rumble", {
  startDelay: 0,
  duration: 200,
  weakMagnitude: 1.0,
  strongMagnitude: 1.0,
});
```

仕様書
---

#### No specification found

No specification data found for `api.Gamepad.vibrationActuator`.  
Check for problems with this page or contribute a missing `spec_url` to mdn/browser-compat-data. Also make sure the specification is included in w3c/browser-specs.

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

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

関連情報
----

* ゲームパッド API
Gamepad: mapping プロパティ
======================

**`Gamepad.mapping`** は `Gamepad` インターフェイスのプロパティで、ブラウザーが機器のコントロールを既知のレイアウトに再マップしたかどうかを示す文字列を返します。

現在、サポートされている既知のレイアウトは次の通りです。

* "standard": 標準のゲームパッド
* "xr-standard": 標準 XR ゲームパッド。 `XRInputSource.gamepad` も参照してください。
例
-


```js
let gp = navigator.getGamepads()[0];
console.log(gp.mapping);
```

仕様書
---

| Specification |
| --- |
| Gamepad # dom-gamepad-mapping |

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

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

関連情報
----

ゲームパッド API の使用
Gamepad: pose プロパティ
===================

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

**`pose`** は `Gamepad` インターフェイスの読み取り専用プロパティで、 WebVR コントローラーに関連付けられたポーズ情報（3D 空間での位置と方向など）を表す `GamepadPose` (en-US) オブジェクトを返します。

### 値

`GamepadPose` (en-US) オブジェクト。

例
-

TBC

仕様書
---

| Specification |
| --- |
| Gamepad Extensions # dom-gamepad-pose |

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

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

関連情報
----

* ゲームパッド API
* WebVR API
Gamepad: hand プロパティ
===================

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

**`hand`** は `Gamepad` インターフェイスの読み取り専用プロパティで、コントローラーが握られている手または、握られている可能性が最も高い手を定義する列挙型を返します。

値
-

`GamepadHand` 列挙型で、可能な値は次の通りです。

* `left` — 左手。
* `right` — 右手。
* `""` （空文字列） — この値は、他の値が適用できない場合に返されます。コントローラーは両手で持っているか、またはどちらかの可能性があります。
例
-

TBC

仕様書
---

| Specification |
| --- |
| Gamepad Extensions # dom-gamepad-hand |

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

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

関連情報
----

* ゲームパッド API
Gamepad: buttons プロパティ
======================

**`Gamepad.buttons`** は `Gamepad` インターフェイスのプロパティで、機器上に存在するボタンを表す `gamepadButton` オブジェクトの配列を返します。

配列内の各要素は、ボタンが押されていない場合は 0、ボタンが押されている場合は 0 以外の値（通常は 1.0）です。それぞれの `gamepadButton` オブジェクトには、 `pressed` と `value` という 2 つのプロパティがあります。

* `pressed` プロパティはボタンが今押されているか (`true`) または押されていないか (`false`) を表す真偽値です。
* `value` プロパティは多くの最新のゲームパッドのトリガーなど、アナログボタンの表示を有効にするために使用される浮動小数点値です。 値は 0.0 〜 1.0 の範囲で正規化され、0.0 は押されていないボタンを表し、1.0 は完全に押されたボタンを表します。
値
-

`gamepadButton` オブジェクトの配列です。

例
-

下記のコードはゲームパッド API ボタンのデモから取得したものです。(デモのライブを見ることができ、Github でソースコードを見つけることができます)。コードをフォークする際には以降に気をつけてください — Chrome では `Navigator.getGamepads` は `webkit` 接頭辞が必要で、ボタンの値は double 値の配列として格納されますが、 Firefox は`Navigator.getGamepads` では接頭辞が不要で、ボタンの値は `GamepadButton` オブジェクトの配列に保存されます。`GamepadButton.value` または `GamepadButton.pressed` プロパティはボタンの種類に応じてアクセスする必要があります。この簡単なサンプルでは一方のみを許可しています。


```js
function gameLoop() {
  let a = 0;
  let b = 0;
  if (navigator.webkitGetGamepads) {
    const gp = navigator.webkitGetGamepads()[0];

    if (gp.buttons[0] === 1) {
      b--;
    } else if (gp.buttons[1] === 1) {
      a++;
    } else if (gp.buttons[2] === 1) {
      b++;
    } else if (gp.buttons[3] === 1) {
      a--;
    }
  } else {
    const gp = navigator.getGamepads()[0];

    if (gp.buttons[0].value > 0 || gp.buttons[0].pressed) {
      b--;
    } else if (gp.buttons[1].value > 0 || gp.buttons[1].pressed) {
      a++;
    } else if (gp.buttons[2].value > 0 || gp.buttons[2].pressed) {
      b++;
    } else if (gp.buttons[3].value > 0 || gp.buttons[3].pressed) {
      a--;
    }
  }

  ball.style.left = `${a \* 2}px`;
  ball.style.top = `${b \* 2}px`;

  const start = rAF(gameLoop);
}
```

仕様書
---

| Specification |
| --- |
| Gamepad # dom-gamepad-buttons |

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

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

関連情報
----

ゲームパッド API の使用
Gamepad: index プロパティ
====================

**`Gamepad.index`** は `Gamepad` インターフェイスのプロパティで、現在システムに接続されているそれぞれの機器の整数の固有番号（自動採番）の整数を返します。

これは複数のコントローラーを識別するために使用することができます。接続が解除された後で再接続されたゲームパッドは、同じ番号を保持します。

値
-

数値です。

例
-


```js
window.addEventListener("gamepadconnected", () => {
  const gp = navigator.getGamepads()[0];
  gamepadInfo.textContent = `Gamepad connected at index ${gp.index}: ${gp.id}.`;
});
```

仕様書
---

| Specification |
| --- |
| Gamepad # dom-gamepad-index |

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

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

関連情報
----

ゲームパッド API の使用
Gamepad: id プロパティ
=================

**`Gamepad.id`** は `Gamepad` インターフェイスのプロパティで、コントローラーに関するいくつかの情報を含む文字列を返します。

正確な構文は厳密には指定されていませんが、Firefox では 3 つの情報がダッシュ (`-`) で区切られています 。

* USB ベンダーとコントローラーの製品 ID を含む 2 つの 4 桁 16 進数字列
* ドライバーが提供するコントローラーの名前

例えば、PS2 のコントローラーは **810-3-USB Gamepad** を返します。

この情報は、機器上のコントロールの対応を見つけたり、ユーザーに有用なフィードバックを表示したりすることを目的としています。

値
-

文字列プリミティブです。

例
-


```js
window.addEventListener("gamepadconnected", () => {
  const gp = navigator.getGamepads()[0];
  gamepadInfo.textContent = `Gamepad connected at index ${gp.index}: ${gp.id}.`;
});
```

仕様書
---

| Specification |
| --- |
| Gamepad # dom-gamepad-id |

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

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

関連情報
----

ゲームパッド API の使用
Gamepad: connected プロパティ
========================

**`Gamepad.connected`** は `Gamepad` インターフェイスのプロパティで、ゲームパッドがシステムに接続されているかどうかを示す論理値を返します。

ゲームパッドが接続されている場合の値は `true`、そうでない場合は `false` となります。

値
-

論理値です。

例
-


```js
const gp = navigator.getGamepads()[0];
console.log(gp.connected);
```

仕様書
---

| Specification |
| --- |
| Gamepad # dom-gamepad-connected |

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

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

関連情報
----

ゲームパッド API の使用
Gamepad: timestamp プロパティ
========================

**`Gamepad.timestamp`** は `Gamepad` インターフェイスのプロパティで、このゲームパッドのデータが最後に更新された時刻を表す `DOMHighResTimeStamp` を返します。

このプロパティの背景にある考え方は、ハードウェアにより `axes` や `button` のデータが更新されたかどうかを開発者が判断できるようにすることです。このプロパティの値は ``PerformanceTiming`` インターフェイスの `navigationStart` 属性との相対的な値になります。値は単調増加しています。つまり、新しい値は常に古い値以上であるため、新旧の値を比較することでデータの更新を判断できます。

**メモ:** このプロパティは、現在、どこでも対応しているわけではありません。

値
-

`DOMHighResTimeStamp` オブジェクトです。

例
-


```js
const gp = navigator.getGamepads()[0];
console.log(gp.timestamp);
```

仕様書
---

| Specification |
| --- |
| Gamepad # dom-gamepad-timestamp |

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

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

関連情報
----

ゲームパッド API の使用
IDBDatabase: versionchange イベント
===============================

`versionchange` イベントは、データベースの構造の変更 (`IDBOpenDBRequest` または `IDBFactory.deleteDatabase` で `upgradeneeded` イベントが送られた) が他のどこか (同じコンピューターの別のウインドウまたはタブの可能性が最も高いでしょう) で要求された時発火します。

構文
--

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


```js
addEventListener("versionchange", (event) => {});
onversionchange = (event) => {};
```

イベント型
-----

汎用の `Event` です。

例
-

この例ではデータベースを開き、成功時、`versionchange` のリスナーを追加します。


```js
// データベースを開きます
const dBOpenRequest = window.indexedDB.open("Nonexistent", 4);

dBOpenRequest.onupgradeneeded = (event) => {
  const db = event.target.result;
  // このデータベース用の objectStore を作成します
  const objectStore = db.createObjectStore("toDoList", {
    keyPath: "taskTitle",
  });

  // objectStore に格納するデータアイテムを定義します
  objectStore.createIndex("hours", "hours", { unique: false });
  objectStore.createIndex("minutes", "minutes", { unique: false });
  objectStore.createIndex("day", "day", { unique: false });
  objectStore.createIndex("month", "month", { unique: false });
  objectStore.createIndex("year", "year", { unique: false });
};

dBOpenRequest.addEventListener("success", (event) => {
  const db = event.target.result;
  db.addEventListener("versionchange", (event) => {
    console.log("このデータベースのバージョンが変更されました");
  });
});
```


`onversionchange` イベントハンドラープロパティを用いた、同じ例です。


```js
// データベースを開きます
const dBOpenRequest = window.indexedDB.open("Nonexistent", 4);

dBOpenRequest.onupgradeneeded = (event) => {
  const db = event.target.result;
  // このデータベース用の objectStore を作成します
  const objectStore = db.createObjectStore("toDoList", {
    keyPath: "taskTitle",
  });

  // objectStore に格納するデータアイテムを定義します
  objectStore.createIndex("hours", "hours", { unique: false });
  objectStore.createIndex("minutes", "minutes", { unique: false });
  objectStore.createIndex("day", "day", { unique: false });
  objectStore.createIndex("month", "month", { unique: false });
  objectStore.createIndex("year", "year", { unique: false });
};

dBOpenRequest.onsuccess = (event) => {
  const db = event.target.result;
  db.onversionchange = (event) => {
    console.log("このデータベースのバージョンが変更されました");
  };
};
```

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

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

関連情報
----

* IndexedDB の使用
IDBDatabase: objectStoreNames プロパティ
===================================

**`objectStoreNames`** は `IDBDatabase` インターフェイスのプロパティで、現在接続しているデータベースのオブジェクトストア名のリストを含む `DOMStringList` です。

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

### 値

現在接続しているデータベースのオブジェクトストア名のリストを含む `DOMStringList`。

例
-


```js
// データベースを開く
const DBOpenRequest = window.indexedDB.open("toDoList", 4);

// これら 2 個のイベントハンドラーは､データベースが正常に開かれたか､失敗した時に動作します｡
DBOpenRequest.onerror = (event) => {
  note.innerHTML += "<li>データベースの読み込みに失敗しました｡</li>";
};

DBOpenRequest.onsuccess = (event) => {
  note.innerHTML += "<li>データベースを初期化しました｡</li>";

  // データベースを開いた結果を変数 db に保存します｡これは後でたくさん使います｡
  db = DBOpenRequest.result;

  // この行では接続したデータベースのオブジェクトストア名を記録します｡
  // { ['my-store-name'] } のようなオブジェクトのはずです。
  console.log(db.objectStoreNames);
};
```

仕様書
---

| Specification |
| --- |
| Indexed Database API 3.0 # ref-for-dom-idbdatabase-objectstorenames① |

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

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

関連情報
----

* IndexedDB の使用
* トランザクションの開始 : `IDBDatabase`
* トランザクションの使用 : `IDBTransaction`
* キーの範囲の設定 : `IDBKeyRange`
* データの取得と変更 : `IDBObjectStore`
* カーソルの使用 : `IDBCursor`
* リファレンス例 : To-do Notifications (動く例を見る)
IDBDatabase: name プロパティ
=======================

**`name`** は `IDBDatabase` インターフェイスのプロパティで、接続しているデータベース名を含む文字列です。

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

値
-

接続しているデータベース名を含む文字列です。

例
-

この例は接続しているデータベースと、DB の `version` と `name` プロパティを持つ `IDBDatabase` オブジェクトの結果、そしてログを表示します。完全な例は、To-do Notifications アプリケーション（動く例を見る）を見てください。


```js
// データベースを開く
const DBOpenRequest = window.indexedDB.open("toDoList", 4);

// これら 2 個のイベントハンドラーは､データベースが正常に開かれたか､失敗した時に動作します｡
DBOpenRequest.onerror = (event) => {
  note.innerHTML += "<li>データベースの読み込みに失敗しました｡</li>";
};

DBOpenRequest.onsuccess = (event) => {
  note.innerHTML += "<li>データベースを初期化しました｡</li>";

  // データベースを開いた結果を変数 db に保存します｡これは後でたくさん使います｡
  db = DBOpenRequest.result;

  // この行ではデータベースの名前をログ出力します。 "toDoList" のはずです。
  console.log(db.name);
};
```

仕様書
---

| Specification |
| --- |
| Indexed Database API 3.0 # ref-for-dom-idbdatabase-name① |

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

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

関連情報
----

* IndexedDB の使用
* トランザクションの開始 : `IDBDatabase`
* トランザクションの使用 : `IDBTransaction`
* キーの範囲の設定 : `IDBKeyRange`
* データの取得と変更 : `IDBObjectStore`
* カーソルの使用 : `IDBCursor`
* リファレンス例 : To-do Notifications (動く例を見る)