recursal/MDN huggingface dataset:
HTMLImageElement: complete プロパティ
================================

`HTMLImageElement` インターフェイスの **`complete`** プロパティは読み取り専用で、画像の読み込みが完了したかどうかを示す論理値です。

値
-

 論理値で、画像の読み込みが完了した場合は `true` となります。
 それ以外の場合は `false` となります．

以下のいずれかを満たす場合、画像の読み込みが完了したと見なされます。

* `src` 属性も `srcset` 属性も指定されていない場合
* `srcset` 属性が存在せず、`src` 属性は指定されていても空文字列 (`""`) である場合
* 画像リソースが完全に取得され、レンダリング/合成のためにキューに入れられた場合
* 画像要素が事前に、画像が完全に利用可能であり、使用可能であると判断している場合
* 画像が「壊れている」。つまり、エラーが発生したか、画像の読み込みが無効になっているために画像の読み込みができない場合

画像を非同期で受け取る可能性があるため、スクリプトの実行中に `complete` の値が変更される可能性があることに留意してください。

例
-

画像をライトボックスモードで開いて、見やすくしたり、画像を編集したりできるフォトライブラリーアプリを考えてみましょう。これらの写真は非常に大きいので、読み込みを待つ必要がなくなるよう、コードでは `async`/`await` を使用してバックグラウンドで画像を読み込んでいます。

 しかし、画像の読み込みが完了したときにのみ実行する必要がある他のコードがあるとします。
 例えば、ライトボックス内の画像に対して赤目除去を実行するコマンドなどです。理想的には、画像が完全に読み込まれていなければこのコマンドは実行されませんが、信頼性を向上させるために、これが事実であることを確認する必要があります。

そこで、赤目除去のトリガーとなるボタンから呼び出される `fixRedEyeCommand()` 関数は、処理を実行する前にライトボックス画像の `complete` プロパティの値をチェックします。これは以下のコードで実証されています。


```js
let lightboxElem = document.querySelector("#lightbox");
let lightboxImgElem = lightboxElem.querySelector("img");
let lightboxControlsElem = lightboxElem.querySelector(".toolbar");

async function loadImage(url, elem) {
  return new Promise((resolve, reject) => {
    elem.onload = () => resolve(elem);
    elem.onerror = reject;
    elem.src = url;
  });
}

async function lightBox(url) {
  lightboxElem.style.display = "block";
  await loadImage("https://somesite.net/huge-image.jpg", lightboxImgElem);
  lightboxControlsElem.disabled = false;
}

// …

function fixRedEyeCommand() {
  if (lightboxElem.style.display === "block" && lightboxImgElem.complete) {
    fixRedEye(lightboxImgElem);
  } else {
    /\* 画像が完全に読み込まれるまで開始することはできない \*/
  }
}
```

仕様書
---

| Specification |
| --- |
| HTML Standard # dom-img-complete-dev |

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

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

`HTMLImageElement` の **`x`** プロパティは読み取り専用で、ルート要素の原点からの相対座標で `<img>` 要素の左端の x 座標を示します。

`x` および `y` プロパティは、その `display` プロパティの計算値が `table-column` または `table-column-group` を持つ場合にのみ画像に有効です。言い換えれば、いずれかの値が明示的に設定されているか、包含する要素からそれを継承しているか、あるいは、 `<col>` または `<colgroup>` によって記述される列内に位置していることで、その画像に設定された場合です。

値
-

その要素の直近のルート要素の左端と `<img>` 要素の境界ボックスの左端との距離をピクセル単位で示す整数値です。直近のルート要素とは、この画像を含む一番外側の `<html>` 要素です。画像が `<iframe>` の中にある場合、その `x` はそのフレームからの相対座標です。

 下の図では、左境界の端は青いパディング領域の左端です。
 したがって、 `x` が返す値は、その点からコンテンツ領域の左端までの距離となります。

![要素に関連するさまざまなボックスの関係を示す図](/ja/docs/Web/API/HTMLImageElement/x/boxmodel-3.png)

**メモ:** `x` プロパティは、画像の `display` プロパティの計算値が `table-column` または `table-column-group` である場合にのみ有効です。言い換えれば、いずれかが `<img>` に直接設定されているか、包含要素から継承されているか、または `<col>` や `<colgroup>` で記述されている列内にあることが必要です。

例
-

以下の例では、 `HTMLImageElement` プロパティ `x` と `y` の使い方を示しています。

### HTML

この例では、あるウェブサイトのユーザーに関する情報（ユーザーID、フルネーム、アバター画像など）を示す表が表示されます。


```html
<table id="userinfo">
  <colgroup>
    <col span="2" class="group1">
    <col>
  </colgroup>
  <tr>
    <th>UserID</th>
    <th>Name</th>
    <th>Avatar</th>
  </tr>
  <tr>
    <td>12345678</td>
    <td>Johnny Rocket</td>
    <td><img src="https://interactive-examples.mdn.mozilla.net/media/examples/grapefruit-slice-332-332.jpg"></td>
  </th>
</table>
<pre id="log">
</pre>
```

### JavaScript

表から画像を取得し、その `x` と `y` の値を調べる JavaScript コードは以下のとおりです。


```js
let logBox = document.querySelector("pre");
let tbl = document.getElementById("userinfo");

let log = (msg) => {
  logBox.innerHTML += `${msg}<br>`;
};

let cell = tbl.rows[1].cells[2];
let image = cell.querySelector("img");

log(`Image's global X: ${image.x}`);
log(`Image's global Y: ${image.y}`);
```


これは `<table>` の `rows` プロパティを使用して表の行のリストを取得し、そこから行 1 （ゼロ起点のインデックスなので、上から 2 行目を意味します）を参照するものです。次に、 `<tr>` （表の行）要素の `cells` プロパティを調べて、その行のセルのリストを取得します。3 番目のセルは、その行から取得されます（こちらも、ゼロ起点のオフセットとして 2 を指定します）。

そこから、 `querySelector()` をそのセルを表す `HTMLTableCellElement` に対して呼び出せば、そのセルから `<img>` 要素自体を取得することができます。

最後に、 `HTMLImageElement` の `x` と `y` のプロパティの値を調べて表示することができます。

### CSS

表の外観を定義する CSS です。


```css
.group1 {
  background-color: #d7d9f2;
}

table {
  border-collapse: collapse;
  border: 2px solid rgb(100, 100, 100);
  font-family: sans-serif;
}

td,
th {
  border: 1px solid rgb(100, 100, 100);
  padding: 10px 14px;
}

td > img {
  max-width: 4em;
}
```

### 結果

結果の表は次のようになります。

仕様書
---

| Specification |
| --- |
| CSSOM View Module # dom-htmlimageelement-x |

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

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

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

**`loadEventEnd`** 読み取り専用プロパティは、現在のドキュメントのロードイベントが完了した時刻と同じ`timestamp` を返します。

構文
--
```

perfEntry.loadEventEnd;
```

### 返値

現在のドキュメントのロードイベントが完了した時刻を表す `timestamp`。

例
-

次の例は、このプロパティの使用方法を示しています。


```js
function print\_nav\_timing\_data() {
  // Use getEntriesByType() to just get the "navigation" events
  var perfEntries = performance.getEntriesByType("navigation");

  for (var i = 0; i < perfEntries.length; i++) {
    console.log("= Navigation entry[" + i + "]");
    var p = perfEntries[i];
    // dom Properties
    console.log(
      "DOM content loaded = " +
        (p.domContentLoadedEventEnd - p.domContentLoadedEventStart),
    );
    console.log("DOM complete = " + p.domComplete);
    console.log("DOM interactive = " + p.interactive);

    // document load and unload time
    console.log("document load = " + (p.loadEventEnd - p.loadEventStart));
    console.log("document unload = " + (p.unloadEventEnd - p.unloadEventStart));

    // other properties
    console.log("type = " + p.type);
    console.log("redirectCount = " + p.redirectCount);
  }
}
```

仕様書
---

| Specification |
| --- |
| Navigation Timing Level 2 # dom-performancenavigationtiming-loadeventend |

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

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

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

**`source`** は `VRLayerInit` インターフェイス（辞書）のプロパティで、 `VRDisplay` によってコンテンツが表示されるキャンバスを定義します。

**メモ:** このインターフェイスは、古い WebVR API の一部でした。 WebXR Device APIに置き換えられました。

値
-

`HTMLCanvasElement` または `OffscreenCanvas` (en-US) オブジェクトです。

例
-

例については `VRLayerInit` を参照してください。

仕様書
---

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

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

関連情報
----

* WebVR API
VRLayerInit.leftBounds
======================

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

**`leftBounds`** は `VRLayerInit` インターフェイス（辞書）のプロパティで、 `VRDisplay` によってコンテンツが表示されるキャンバスの左側のテクスチャ境界を定義します。

**メモ:** このインターフェイスは、古い WebVR API の一部でした。 WebXR Device APIに置き換えられました。

値
-

4 つの浮動小数点値の配列で、 0.0–1.0 の値を取ることができます。

* 境界の左側のオフセット。
* 境界の上側のオフセット。
* 境界の幅。
* 境界の高さ。

この辞書で `leftBounds` が指定されていない場合、使用される既定値は `[0.0, 0.0, 0.5, 1.0]` です。

例
-

例については `VRLayerInit` を参照してください。

仕様書
---

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

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

関連情報
----

* WebVR API
VRLayerInit.rightBounds
=======================

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

**`rightBounds`** は `VRLayerInit` インターフェイス（辞書）のプロパティで、 `VRDisplay` によってコンテンツが表示されるキャンバスの右側のテクスチャ境界を定義します。

**メモ:** このインターフェイスは、古い WebVR API の一部でした。 WebXR Device APIに置き換えられました。

値
-

4 つの浮動小数点値の配列で、 0.0–1.0 の値を取ることができます。

1. 境界の左側のオフセット。
2. 境界の上側のオフセット。
3. 境界の幅。
4. 境界の高さ。

この辞書で `leftBounds` が指定されていない場合、使用される既定値は `[0.5, 0.0, 0.5, 1.0]` です。

例
-

例については `VRLayerInit` を参照してください。

仕様書
---

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

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

関連情報
----

* WebVR API
UIEvent: UIEvent() コンストラクター
===========================

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

**メモ:** このコンストラクターを使用して合成イベントを作成した場合、セキュリティ上の理由から、そのイベントは信頼されません。
 ブラウザーで生成された `UIEvent`` オブジェクトのみが信頼され、信頼されたイベントのみが既定のアクションを発生させます。


構文
--


```js
new UIEvent(type)
new UIEvent(type, options)
```

### 値

`type`

 文字列で、このイベントの名前を表します。
 大文字小文字の区別があり、ブラウザーは `load`, `unload`, `abort`, `error`, `select` の何れかに設定します。


`options` 省略可

*`Event()` で定義されたプロパティに加え*、以下のプロパティを持つすることができるオブジェクトです。

`detail` 省略可

 数値で、このイベントに関連付けられたイベント依存の値です。
 既定値は `0` であり `UIEvent.detail` は、標準イベントのセマンティックを列挙します。


`view` 省略可

イベントに関連付けられた `Window` です。既定値は `null` です。

`sourceCapabilities` 省略可 
Non-standard

`InputDeviceCapabilities` オブジェクトで、タッチイベントを生成する原因となった物理的な機器についての情報を提供します。


### 返値

新しい `UIEvent` オブジェクト。

仕様書
---

| Specification |
| --- |
| UI Events # dom-uievent-uievent |

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

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

関連情報
----

* `UIEvent`: 構築するオブジェクトのインターフェイス
UIEvent: which プロパティ
====================

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

**`UIEvent.which`** は `UIEvent` インターフェイスの読み取り専用プロパティで、マウスの押されたボタンを示す数値、`keyCode` の数値、キーボードで押されたキーの文字コード (`charCode`) のいずれかを返します。

値
-

### KeyboardEvent の値 
Non-standard

`KeyboardEvent` においては、 `event.which` は、英数字キーと非英数字キーのどちらが押されたかに応じて、押された特定のキーに対する数値のコードを含んでいます。
 詳しくは非推奨の `KeyboardEvent.charCode` と `KeyboardEvent.keyCode` を参照してください。

**メモ:** 新しいコードでは `KeyboardEvent.key` または `KeyboardEvent.code` を検討してください。

### MouseEvent の値 
Non-standard

`MouseEvent` においては、 `event.which` は押されたボタンを表す数値型です。

* `0`: No button
* `1`: 左ボタン
* `2`: 中央ボタン
* `3`: 右ボタン

左利き用に設定されたマウスの場合、ボタンの動作は逆になります。この場合、値は右から左に読み取られます。

**メモ:** 新しいコードでは `MouseEvent.button` を検討してください。

例
-


```html
<html lang="ja">
  <head>
    <title>charCode/keyCode/which の例</title>

    <script>
 function showKeyPress(evt) {
 alert(
 `onkeypress ハンドラー:\n` +
 `keyCode プロパティ: ${evt.keyCode}\n` +
 `which プロパティ: ${evt.which}\n` +
 `charCode プロパティ: ${evt.charCode}\n` +
 `押されたキーの文字: ${String.fromCharCode(evt.charCode)}\n`,
 );
 }

 function keyDown(evt) {
 alert(
 `onkeydown ハンドラー:\n` +
 `keyCode プロパティ: ${evt.keyCode}\n` +
 `which プロパティ: ${evt.which}\n`,
 );
 }
 </script>
  </head>

  <body onkeypress="showKeyPress(event);" onkeydown="keyDown(event);">
    <p>何かキーを押してください。</p>
  </body>
</html>
```

仕様書
---

| Specification |
| --- |
| UI Events # dom-uievent-which |

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

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

関連情報
----

* `KeyboardEvent`
* `MouseEvent`
UIEvent: detail プロパティ
=====================

**`UIEvent.detail`** は読み取り専用のプロパティで、 0 以外の値の場合には現在（イベントによっては次）のクリック数を示します。

`click` または `dblclick` イベントでは、 `UIEvent.detail` は現在のクリック数です。

`mousedown` または `mouseup` イベントでは、 `UIEvent.detail` は現在のクリック数に*1 を加えた*ものです。

他の `UIEvent` オブジェクトでは、 `UIEvent.detail` は常にゼロです。

仕様書
---

| Specification |
| --- |
| UI Events # dom-uievent-detail |

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

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

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

**`UIEvent.sourceCapabilities`** は読み取り専用のプロパティで、タッチイベントの生成を担当した物理的な機器に関する情報を提供する `InputDeviceCapabilities` インターフェイスのインスタンスを返します。このイベントを担当した入力機器がない場合は、 `null` を返します。

ユーザーがある入力機器を操作したときに、一連の様々な入力イベントが発生した場合、すべての入力イベントの `sourceCapabilities` プロパティは、同じ `InputDeviceCapabilities` のインスタンスを指すことになります。例えば、ユーザーがタッチ画面から指を離したとき、 いくつかの UIEvent 、例えば `touchend`、`mousedown`、`click`、`focus` などが生成されるかもしれません。これらのイベントはすべて、タッチ画面を表す同じ `sourceCapabilities` を持っている必要があります。

機器がイベントを「担当している」と見なされるのは、その操作がウェブプラットフォームによって提供される抽象化の一部である場合のみです。例えば、多くのユーザーエージェントはマウスやキーボードでウィンドウのサイズを変更することができますが、この詳細はウェブプラットフォームには一切公開されないため、 resize イベントの sourceCapabilities は通常 null になります。

値
-

`InputDeviceCapabilities` のインスタンスです。

仕様書
---

| Specification |
| --- |
| Input Device Capabilities # dom-uievent-sourcecapabilities |

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

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

**`UIEvent.view`** は読み取り専用のプロパティで、イベントを生成したものの WindowProxy オブジェクトを返します。ブラウザーでは、これはイベントが発行された `Window` です。

値
-

* `view` は `AbstractView` オブジェクトの参照です。
仕様書
---

| Specification |
| --- |
| UI Events # dom-uievent-view |

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

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

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

**`UIEvent.initUIEvent()`** メソッドは、一度作成された UI イベントを初期化します。

この方法で初期化されるイベントは `Document.createEvent()` で作成されている必要があります。このメソッドでイベントを設定するには、 `EventTarget.dispatchEvent()` を使用してイベントを発行する前に行う必要があります。発行された後は、何もしません。

**警告:** このメソッドは非推奨なので、もう使用しないでください。

代わりに、 `UIEvent()` などの具体的なイベントのコンストラクターを使用してください。イベントの作成と起動のページで、これらの使用方法について詳しく説明しています。

構文
--


```js
initUIEvent(type, canBubble, cancelable, view, detail)
```

### 引数

`type`

文字列で、イベントの種類を定義します。

`canBubble`

論理値で、イベントがイベントチェーンを通じてバブリングするかどうかを決定します。設定すると、読み取り専用のプロパティ `Event.bubbles` がその値を提供します。

`cancelable`

論理値で、イベントをキャンセルできるかどうかを定義します。設定すると、読み取り専用のプロパティ `Event.cancelable` がその値を提供します。

`view`

イベントに関連付けられた WindowProxy です。

`detail`

`unsigned long` で、イベントの種類に応じて、イベントの詳細情報を示します。マウスイベントの場合、指定された画面の場所でマウスが何回クリックされたかを示します。

### 返値

なし (`undefined`)。

例
-


```js
const e = document.createEvent("UIEvent");
// バブリングし、キャンセル可能で、 view と detail プロパティが
// それぞれウィンドウと 1 に初期化されたクリックイベントを
// 作成
e.initUIEvent("click", true, true, window, 1);
```

仕様書
---

| Specification |
| --- |
| UI Events # dom-uievent-inituievent |

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

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

関連情報
----

* `UIEvent`
* この非推奨のメソッドの代わりに使用するコンストラクター:
 `UIEvent()`。より具体的なコンストラクターを使用することもできます。
DeviceMotionEventRotationRate: gamma プロパティ
==========================================

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

これは読み取り専用のプロパティで、 Y 軸の回転速度を秒あたりの角度で示します。

値
-

`double` で、 Y 軸の回転速度を秒あたりの角度で示します。
 詳しくは加速度値の説明を参照してください。

仕様書
---

| Specification |
| --- |
| DeviceOrientation Event Specification # dom-devicemotioneventrotationrate-gamma |

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

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

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

**`DeviceMotionEventRotationRate.alpha`** は読み取り専用のプロパティで、 Z 軸の回転速度を秒あたりの角度で示します。

値
-

`double` で、 Z 軸の回転速度を秒あたりの角度で示します。
 詳しくは加速度値の説明を参照してください。

仕様書
---

| Specification |
| --- |
| DeviceOrientation Event Specification # dom-devicemotioneventrotationrate-alpha |

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

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

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

**`DeviceMotionEventRotationRate.beta`** は読み取り専用のプロパティで、 X 軸の回転速度を秒あたりの角度で示します。

値
-

`double` で、 X 軸の回転速度を秒あたりの角度で示します。
 詳しくは加速度値の説明を参照してください。

仕様書
---

| Specification |
| --- |
| DeviceOrientation Event Specification # dom-devicemotioneventrotationrate-beta |

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

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.
Permissions.revoke()
====================

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

**`Permissions.revoke()`** は `Permissions` インターフェイスのメソッドで、現在設定されている権限を既定の状態（通常は `prompt`）に戻します。
 このメソッドは、グローバルな `Permissions` オブジェクトである `navigator.permissions` に対して呼び出します。

構文
--


```js
revoke(descriptor)
```

### 引数

`descriptor`

名前と値のペアのカンマ区切りリストで構成される、操作のオプションを設定する `PermissionDescriptor` 辞書に基づくオブジェクト。 利用可能なオプションは次のとおりです。

`name`

権限を照会したい API の名前。 有効な値は、`'geolocation'`、`'midi'`、`'notifications'`、`'push'` です。

`userVisibleOnly`

Push のみ。 Firefox は対応していません。 下記のブラウザーの互換性の節を参照してください）すべてのメッセージについて通知を表示するか、サイレントプッシュ通知を送信できるかを示します。 既定値は `false` です。

`sysex` （MIDI のみ）

システムエクスクルーシブメッセージが必要か受信するかどうかを示します。 既定値は `false` です。


**メモ:** Firefox 44 以降、通知 とプッシュの権限は統合されました。 （例えば、ユーザーによって、関連する権限のダイアログにより）権限が与えられた場合、　`navigator.permissions.query()` は `notifications` と `push` の両方に対して `true` を返します。

**メモ:** `persistent-storage` 権限は、ストレージ API のとおりに、オリジンがそのストレージとして永続的ボックス（すなわち永続的ストレージ（persistent storage））を使用することを許可します。

### 返値

`Promise` で、要求の結果を示す `PermissionStatus` オブジェクトで履行ハンドラーを呼び出します。

### 例外

`TypeError`

`PermissionDescriptor` 情報の取得が何らかの理由で失敗したか、アクセス権が存在しないか現在サポートされていません（例えば、`midi`、または `userVisibleOnly` と一緒の `push` で）。

例
-

この関数をアプリで使用して、それが有する Geolocation API の権限を取り消すように要求できます。


```js
function revokePermission() {
  navigator.permissions.revoke({ name: "geolocation" }).then((result) => {
    report(result.state);
  });
}
```

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

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.
Permissions.query()
===================

**`Permissions.query()`** は `Permissions` インターフェイスのメソッドで、グローバルスコープに対するユーザーの権限の状態を返します。

構文
--


```js
query(permissionDescriptor)
```

### 引数

`permissionDescriptor`

名前と値のペアのカンマ区切りリストで構成される、`query` 操作のオプションを設定するオブジェクト。 利用可能なオプションは次のとおりです。

`name`

権限を照会したい API の名前です。対応している値の集合はブラウザーごとに異なります。 Firefox の値はこちら、 Chromium の値はこちら、 WebKit の値はこちらにあります。

`userVisibleOnly`

（Push のみ。 Firefox は対応していません。 下記のブラウザーの互換性の節を参照してください）すべてのメッセージについて通知を表示するか、サイレントプッシュ通知を送信できるかを示します。 既定値は `false` です。

`sysex` （Midi のみ）

システムエクスクルーシブメッセージが必要か受信するかどうかを示します。 既定値は `false` です。


**メモ:** Firefox 44 以降、通知とプッシュの権限が統合されました。 （例えば、ユーザーによって、関連する権限のダイアログにより）権限が与えられた場合、 `navigator.permissions.query()` は `notifications` と `push` の両方に対して `true` を返します。

**メモ:** `persistent-storage` 権限は、ストレージ API のとおりに、オリジンがそのストレージとして永続的ボックス（すなわち永続的ストレージ（persistent storage））を使用することを許可します。

### 返値

`Promise` で、 `PermissionStatus` オブジェクトに解決します。

### 例外

| 例外 | 説明 |
| --- | --- |
| `TypeError` | `PermissionDescriptor` 情報の取得が何らかの理由で失敗したか、その権限が存在しないか、現在対応していない（例えば `midi` や `userVisibleOnly `付きの `push `など）。```` |

例
-


```js
navigator.permissions.query({ name: "geolocation" }).then((result) => {
  if (result.state === "granted") {
    showLocalNewsWithGeolocation();
  } else if (result.state === "prompt") {
    showButtonToEnableLocalNews();
  }
  // 権限が拒否された場合は何もしないでください。
});
```

仕様書
---

| Specification |
| --- |
| Permissions # dom-permissions-query |

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

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

**`XMLHttpRequest.abort()`** メソッドは、すでに送信されたリクエストを中止します。リクエストが中止されたら、 `readyState` が `XMLHttpRequest.UNSENT` (0) に変化し、リクエストの `status` コードが 0 に設定されます。

構文
--


```js
abort()
```

### 引数

なし。

### 返値

なし (`undefined`)。

例
-

この例では、 MDN のホームページからコンテンツを読み込み始め、ある条件が発生したときに、 `abort()` を呼び出すことで転送を中止します。


```js
const xhr = new XMLHttpRequest();
const method = "GET";
const url = "https://developer.mozilla.org/";
xhr.open(method, url, true);

xhr.send();

if (OH\_NOES\_WE\_NEED\_TO\_CANCEL\_RIGHT\_NOW\_OR\_ELSE) {
  xhr.abort();
}
```

仕様書
---

| Specification |
| --- |
| XMLHttpRequest Standard # the-abort()-method |

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

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

関連情報
----

* XMLHttpRequest の使用
XMLHttpRequest: upload プロパティ
============================

`XMLHttpRequest` の `upload` プロパティは、アップロードの進捗を監視することができる `XMLHttpRequestUpload` オブジェクトを返します。

これは不透過なオブジェクトですが、 `XMLHttpRequestEventTarget` でもあるため、進捗を追跡するためにイベントリスナーを装着することができます。

**メモ:** このオブジェクトにイベントリスナーを装着すると、リクエストが「単純なリクエスト」ではなくなり、オリジンをまたぐ場合はプリフライトリクエストが発行されるようになります。 CORS を参照してください。このため、イベントリスナーは `send()` を呼び出す前に登録する必要があり、そうしないとアップロードイベントが発行されなくなります。

**メモ:** また、仕様書では、イベントリスナーは `open()` の後に装着すべきとされているようです。しかし、ブラウザーはこの点に関してバグが多く、リスナーを `open()` の前に登録しないと動作しないことがよくあります。

以下のイベントは、アップロードオブジェクト上で発行され、アップロードを監視するために使用することができます。

| イベント | 解説 |
| --- | --- |
| `loadstart` | アップロードが始まった。 |
| `progress` | 進捗を示すために定期的に発行されます。 |
| `abort` | アップロード操作が中止された。 |
| `error` | アップロードがエラーで失敗した。 |
| `load` | アップロードが成功裏に完了した。 |
| `timeout` | `XMLHttpRequest.timeout` で指定された時間内に返答が届かなかったために、アップロードがタイムアウトした。 |
| `loadend` | アップロードが終了した。このイベントは成功か失敗かにかかわらず、アップロードが終了したときに発行されます。このイベントより前に、 `load`, `error`, `abort`, `timeout` の何れかが、アップロードが終了した理由を示すために配信されます。 |

仕様書
---

| Specification |
| --- |
| XMLHttpRequest Standard # the-upload-attribute |

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

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

関連情報
----

* XMLHttpRequest の使用
* `XMLHttpRequestUpload`
XMLHttpRequest: responseText プロパティ
==================================

`XMLHttpRequest` の **`responseText`** プロパティは読み取り専用で、送信されたリクエストに続いてサーバーから受け取ったテキストを返します。

値
-

文字列で、 `XMLHttpRequest` を使用して受信したテキストデータ、またはリクエストが失敗したときは `null`、またはリクエストがまだ `send()` の呼び出しによって送信されていない場合は `""` です。

非同期リクエストを処理している間、 `responseText` の値は、データが完全に受信できておらず不完全であっても、常にサーバーから受信した現在のコンテンツを持ちます。

`readyState` の値が `XMLHttpRequest.DONE` (`4`) になり、 `status` の値が 200 (`"OK"`) になった場合、コンテンツ全体が受信されたことが分かります。

### 例外

`InvalidStateError` `DOMException`

`XMLHttpRequest.responseType` が空文字列または `"text"` のどちらにも設定されていません。 `responseText` プロパティはテキストコンテンツのみで有効なので、他の値はエラーの状態です。

例
-


```js
const xhr = new XMLHttpRequest();
xhr.open("GET", "/server", true);

// If specified, responseType must be empty string or "text"
xhr.responseType = "text";

xhr.onload = () => {
  if (xhr.readyState === xhr.DONE) {
    if (xhr.status === 200) {
      console.log(xhr.response);
      console.log(xhr.responseText);
    }
  }
};

xhr.send(null);
```

仕様書
---

| Specification |
| --- |
| XMLHttpRequest Standard # the-responsetext-attribute |

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

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