1. 8 ウェブアプリケーションAPI
    1. 8.1 スクリプティング
      1. 8.1.1 導入
      2. 8.1.2 エージェントおよびエージェントクラスター
        1. 8.1.2.1 JavaScriptエージェント形式化との統合
        2. 8.1.2.2 JavaScriptエージェントクラスター形式化との統合
      3. 8.1.3 スクリプト処理モデル
        1. 8.1.3.1 ランタイムスクリプトエラー
        2. 8.1.3.2 未処理のプロミス拒否
        3. 8.1.3.3 モジュール関連ホストフック
      4. 8.1.4 イベントループ
      5. 8.1.5 イベント
        1. 8.1.5.1 イベントハンドラー
        2. 8.1.5.2 要素のイベントハンドラー、Documentオブジェクト、およびWindowオブジェクト
    2. 8.2 WindowOrWorkerGlobalScopeミックスイン
    3. 8.3 Base64ユーティリティメソッド

8 ウェブアプリケーションAPI

8.1 スクリプティング

8.1.1 導入

様々なメカニズムが文書のコンテキストで実行するよう著者が提供する実行可能コードを引き起こすかもしれない。これらのメカニズムは以下を含むが、おそらく以下に限定されない:

8.1.2 エージェントおよびエージェントクラスター

8.1.2.1 JavaScriptエージェント形式化との統合

JavaScriptは、エージェントの概念を定義する。この節は、その言語レベルの概念をウェブプラットフォームにマッピングする。

概念上、エージェントの概念は、JavaScriptコードが実行される、アーキテクチャに依存しない理想的な"スレッド"である。そのようなコードには、互いに同期的にアクセスできる複数のグローバル/レルムが含まれる可能性があるため、単一の実行スレッドで実行する必要がある。

次の種類のエージェントがウェブプラットフォームに存在する:

類似の生成元ウィンドウエージェント

直接、またはdocument.domainのいずれかを使用して、互いに到達する可能性のある様々なWindowオブジェクトを含む。

網羅的なエージェントクラスター生成元をまたいだ分離がtrueである場合、すべてのWindowオブジェクトは同一生成元になり、互いに直接到達することができ、document.domainは処理しない。

同一生成元である2つの Windowオブジェクトは、それぞれが独自のブラウジングコンテキストグループ内にある場合など、異なる類似の生成元ウィンドウエージェント内に存在できる。

専用ワーカーエージェント

単一のDedicatedWorkerGlobalScopeを含む。

共有ワーカーエージェント

単一のSharedWorkerGlobalScopeを含む。

サービスワーカーエージェント

単一のServiceWorkerGlobalScopeを含む。

ワークレットエージェント

単一のWorkletGlobalScopeオブジェクトを含む。

特定のワークレットは複数のレルムを設定できるが、各レルムは他のレルムとは独立して同時にコードを実行できるため、そのような各レルムには独自のエージェントが必要である。

共有および専用ワーカーエージェントのみが、JavaScript Atomics APIの使用を潜在的にブロックすることを可能にする。

8.1.2.2 JavaScriptエージェントクラスター形式化との統合

JavaScriptはエージェントクラスターの概念も定義する。この標準は、作成時にエージェントを適切に配置することにより、ウェブプラットフォームにマッピングする。

エージェントクラスターの概念は、JavaScriptメモリーモデルを定義するために重要であり、特にどのエージェント間でSharedArrayBufferオブジェクトのバッキングデータを共有できるかが重要である。

概念上、エージェントクラスターの概念は、複数の"スレッド"(エージェント)をグループ化する、アーキテクチャに依存しない、理想的な"プロセス境界"である。仕様で定義されるエージェントクラスターは、一般に、ユーザーエージェントに実装される実際のプロセス境界よりも制限的である。これらの理想的な分割を仕様レベルで強制することにより、ユーザーエージェントのプロセスモデルが変化、変更しても、ウェブ開発者は共有メモリーに関して相互運用可能な動作を確認することを保証する。

次のグローバルオブジェクトのペアは、それぞれ同じエージェントクラスター内にあるため、SharedArrayBufferインスタンスを使用して互いにメモリーを共有できる:

次のグローバルオブジェクトのペアは、同じエージェントクラスター内には存在しないため、メモリーを共有することはできない:

8.1.3 スクリプト処理モデル

8.1.3.1 ランタイムスクリプトエラー

さまざまなシナリオで、ユーザーエージェントはWindowerrorイベントを発火させることによって例外を報告できる。 このイベントがキャンセルされない場合、エラーは処理されていないと見なされ、開発者コンソールに報告できる。

8.1.3.2 未処理のプロミス拒否

Window/rejectionhandled_event

Support in all current engines.

Firefox69+Safari11+Chrome49+
Opera36+Edge79+
Edge (Legacy)NoInternet ExplorerNo
Firefox Android🔰 68+Safari iOS11.3+Chrome Android49+WebView Android49+Samsung Internet5.0+Opera Android36+
caniuse.com table

Window/unhandledrejection_event

Support in all current engines.

Firefox69+Safari11+Chrome49+
Opera36+Edge79+
Edge (Legacy)NoInternet ExplorerNo
Firefox Android🔰 68+Safari iOS11.3+Chrome Android49+WebView Android49+Samsung Internet5.0+Opera Android36+
caniuse.com table

同期ランタイムスクリプトエラーに加えて、スクリプトは非同期のプロミス拒否を経験してもよく、unhandledrejectionおよびrejectionhandledイベントで追跡される。

8.1.3.3 モジュール関連ホストフック

JavaScript仕様では、モジュールの構文と、その処理モデルのホストに依存しない部分を定義する。この仕様は、残りの処理モデルを定義する:type属性が"module"に設定されたscript要素を介して、モジュールがどのようにフェッチされ、解決され、実行されるか。[JAVASCRIPT]

JavaScript仕様は"スクリプト"対"モジュール"の観点から話すが、どちらもscript要素を使用しているため、一般にこの仕様はクラシックスクリプトモジュールスクリプトの観点から話す。

modulePromise = import(specifier)

指定子によって識別されるモジュールスクリプトのモジュール名前空間オブジェクトのプロミスを返す。これは、importステートメントフォームを静的に使用する代わりに、実行時にモジュールスクリプトを動的にインポートを可能にする。指定子は、アクティブスクリプトベースURLを基準にして解決される

不正な指定子が指定された場合、または結果のモジュールグラフのフェッチまたは評価中に失敗が発生した場合、返されたプロミスは拒否される。

この構文は、クラシックスクリプトモジュールスクリプトの両方で使用できる。よって、クラシックスクリプトの世界からモジュールスクリプトの世界への架け橋となる。

url = import . meta . url

アクティブモジュールスクリプトベースURLを返す。

この構文は、モジュールスクリプト内でのみ使用できる。

モジュールマップは、インポートされたJavaScriptモジュールがDocumentまたはワーカーごとに1回だけフェッチ、解析、および評価されることを保証するために使用される。

モジュールマップはURLによって入力されるため、次のコードは3つの異なるURLをもたらすため、モジュールマップに3つの個別エントリーを作成する:

import "https://example.com/module.mjs";
import "https://example.com/module.mjs#map-buster";
import "https://example.com/module.mjs?debug=true";

つまり、URLクエリーおよびフラグメントは、を変更して、モジュールマップに個別のエントリーを作成するために変化させることができ、それらは無視されない。よって、3つの別々のフェッチおよび3つの別々のモジュール評価が実行される。

対照的に、次のコードは、モジュールマップに単一のエントリーのみを作成する。これは、これらの入力にURLパーサーを適用した後、結果のURLレコードが等しくなるためである。

import "https://example.com/module2.mjs";
import "https:example.com/module2.mjs";
import "https://///example.com\\module2.mjs";
import "https://example.com/foo/../module2.mjs";

そのため、この2番目の例では、1つのフェッチと1つのモジュール評価のみが発生する。

この動作は、共有ワーカーが解析されたコンストラクターURLによって入力される方法と同じであることに注意する。

以下は妥当なモジュール指定子である:

以下は、上記のアルゴリズムに従った妥当なモジュール指定子であるが、フェッチされると必ず失敗する。

以下は、上記のアルゴリズムによれば妥当なモジュール指定子ではない:

8.1.4 イベントループ

イベント、ユーザーインタラクション、スクリプト、レンダリング、ネットワーキングなどを調整するために、ユーザーエージェントは、この節で説明するイベントループを使用しなければならない。各エージェントには、イベントループが関連付けられており、これはそのエージェントに特有である。

類似の生成元ウィンドウエージェントイベントループは、ウィンドウイベントループとして知られる。 専用ワーカーエージェント共有ワーカーエージェント、またはサービスワーカーエージェントイベントループは、ワーカーイベントループとして知られる。そして、ワークレットエージェントイベントループは、ワークレットイベントループとして知られる。

イベントループは必ずしも実装スレッドに対応しているとは限らない。たとえば、複数のウィンドウイベントループを1つのスレッドで協調的にスケジュールできる。

しかし、[[CanBlock]]をtrueに設定して割り当てられたさまざまなワーカーエージェントの場合、JavaScript仕様は、フォワードプログレスに関する要件を設定し、これは、これらのケースでエージェントごとの専用スレッドを要求することになる。

8.1.5 イベント

8.1.5.1 イベントハンドラー

Events/Event_handlers

多くのオブジェクトは、指定したイベントハンドラーを持つことができる。これは、指定されたオブジェクトの非キャプチャイベントリスナーとして機能する。[DOM]

イベントハンドラーは2つの方法で公開される。

1つ目の方法は、すべてのイベントハンドラーに共通する、イベントハンドラーIDL属性としてである。

2つ目の方法は、イベントハンドラーコンテンツ属性としてである。HTML要素のイベントハンドラーおよびWindowオブジェクトのイベントハンドラーの一部は、この方法で公開される。

これら2つの方法の両方で、イベントハンドラー名前を通して公開される。名前は、常に"on"で始まり、その後にハンドラーの対象となるイベントの名前が続く文字列である。


ほとんどの場合、イベントハンドラーを公開するオブジェクトは、対応するイベントリスナーが追加されるオブジェクトと同じである。しかし、body要素およびframeset要素は、要素のWindowオブジェクト(存在する場合)に作用するいくつかのイベントハンドラーを公開する。いずれの場合も、イベントハンドラーがそのイベントハンドラーターゲットに作用するオブジェクトを呼び出す。


イベントハンドラーIDL属性は、特定のイベントハンドラーに対するIDL属性である。IDL属性の名前は、イベントハンドラー名前と同じである。


イベントハンドラーコンテンツ属性は、特定のイベントハンドラーに対するコンテンツ属性である。コンテンツ属性の名前は、イベントハンドラー名前と同じである。

イベントハンドラーコンテンツ属性が指定される場合、解析されるときに、自動セミコロン挿入後のFunctionBody生成物と一致する、妥当なJavaScriptコードを含まなければならない。

この例は、イベントリスナーが呼び出される順序を示す。この例でボタンがユーザーによってクリックされる場合、ページはそれぞれテキスト"ONE"、"TWO"、"THREE"、"FOUR"をもつ4つの警告を表示する。

<button id="test">Start Demo</button>
<script>
 var button = document.getElementById('test');
 button.addEventListener('click', function () { alert('ONE') }, false);
 button.setAttribute('onclick', "alert('NOT CALLED')"); // event handler listener is registered here
 button.addEventListener('click', function () { alert('THREE') }, false);
 button.onclick = function () { alert('TWO'); };
 button.addEventListener('click', function () { alert('FOUR') }, false);
</script>

しかし、次の例では、イベントハンドラーは、最初のアクティブ化の後(およびイベントリスナーが削除された後)、後で再アクティブにされる前に非アクティブにされる。このページには、"ONE"、"TWO"、"THREE"、"FOUR"、"FIVE"の順に5つのアラートが表示される。

<button id="test">Start Demo</button>
<script>
 var button = document.getElementById('test');
 button.addEventListener('click', function () { alert('ONE') }, false);
 button.setAttribute('onclick', "alert('NOT CALLED')"); // event handler is activated here
 button.addEventListener('click', function () { alert('TWO') }, false);
 button.onclick = null;                                 // but deactivated here
 button.addEventListener('click', function () { alert('THREE') }, false);
 button.onclick = function () { alert('FOUR'); };       // and re-activated here
 button.addEventListener('click', function () { alert('FIVE') }, false);
</script>

EventHandlerコールバック関数型は、イベントハンドラーに対して使用されるコールバックを表す。

JavaScriptにおいて、すべてのFunctionオブジェクトがこのインターフェイスを実装する。

たとえば、次の文書断片で:

<body onload="alert(this)" onclick="alert(this)">

文書がロードされるときに"[object Window]"という警告を、ページでユーザーが何かをクリックするときはいつでも"[object HTMLBodyElement]"という警告を流す。

関数の戻り値は、イベントがキャンセルされるかどうかに影響する。戻り値がfalseの場合、イベントはキャンセルされる。

プラットフォームには、歴史的な理由から2つの例外がある:

歴史的な理由により、onerrorハンドラーは、異なる引数を持つ。

window.onerror = (message, source, lineno, colno, error) => {};

同様に、onbeforeunloadハンドラーには異なる戻り値がある。文字列にキャストされる

8.1.5.2 要素のイベントハンドラー、Documentオブジェクト、およびWindowオブジェクト

以下は、イベントハンドラーコンテンツ属性イベントハンドラーIDL属性の両方として、すべてのHTML要素でサポートされるイベントハンドラー(およびそれに対応するイベントハンドラーイベント型)である。イベントハンドラーIDL属性として、すべてのDocumentおよびWindowオブジェクトでサポートされる:

イベントハンドラーイベントハンドラーイベント型
onabort

GlobalEventHandlers/onabort

Support in one engine only.

Firefox?Safari?ChromeYes
Opera?EdgeYes
Edge (Legacy)NoInternet Explorer?
Firefox Android?Safari iOS?Chrome AndroidYesWebView AndroidYesSamsung InternetYesOpera Android?
abort
onauxclickauxclick
oncancel

GlobalEventHandlers/oncancel

Support in one engine only.

FirefoxNoSafari?ChromeYes
Opera?EdgeYes
Edge (Legacy)NoInternet Explorer?
Firefox AndroidNoSafari iOS?Chrome AndroidYesWebView AndroidYesSamsung InternetYesOpera Android?
cancel
oncanplay

GlobalEventHandlers/oncanplay

FirefoxYesSafari?ChromeYes
Opera?EdgeYes
Edge (Legacy)NoInternet Explorer?
Firefox AndroidYesSafari iOS?Chrome AndroidYesWebView AndroidYesSamsung InternetYesOpera Android?
canplay
oncanplaythrough

GlobalEventHandlers/oncanplaythrough

FirefoxYesSafari?ChromeYes
Opera?EdgeYes
Edge (Legacy)NoInternet Explorer?
Firefox AndroidYesSafari iOS?Chrome AndroidYesWebView AndroidYesSamsung InternetYesOpera Android?
canplaythrough
onchange

GlobalEventHandlers/onchange

Support in all current engines.

Firefox1+Safari3+Chrome1+
Opera9+Edge79+
Edge (Legacy)12+Internet Explorer9+
Firefox Android4+Safari iOS1+Chrome Android18+WebView Android1+Samsung Internet1.0+Opera Android10.1+
change
onclick

GlobalEventHandlers/onclick

Support in all current engines.

Firefox1+Safari3+Chrome1+
Opera9+Edge79+
Edge (Legacy)12+Internet Explorer9+
Firefox Android4+Safari iOS1+Chrome Android18+WebView Android1+Samsung Internet1.0+Opera Android10.1+
click
onclose

GlobalEventHandlers/onclose

FirefoxYesSafariNoChromeYes
Opera?EdgeYes
Edge (Legacy)NoInternet Explorer?
Firefox AndroidYesSafari iOSNoChrome AndroidYesWebView AndroidYesSamsung InternetYesOpera Android?
close
oncontextmenu

GlobalEventHandlers/oncontextmenu

FirefoxYesSafari?ChromeYes
Opera?EdgeYes
Edge (Legacy)18Internet Explorer?
Firefox Android?Safari iOS?Chrome AndroidNoWebView AndroidNoSamsung InternetNoOpera Android?
contextmenu
oncuechange

GlobalEventHandlers/oncuechange

Firefox68+Safari?ChromeYes
Opera?EdgeYes
Edge (Legacy)NoInternet Explorer?
Firefox Android68+Safari iOS?Chrome AndroidYesWebView AndroidYesSamsung InternetYesOpera Android?
cuechange
ondblclick

GlobalEventHandlers/ondblclick

FirefoxYesSafari?ChromeYes
Opera?EdgeYes
Edge (Legacy)18Internet Explorer?
Firefox Android?Safari iOS?Chrome AndroidNoWebView AndroidNoSamsung InternetNoOpera Android?
dblclick
ondragdrag
ondragenddragend
ondragenterdragenter
ondragleavedragleave
ondragoverdragover
ondragstartdragstart
ondropdrop
ondurationchange

GlobalEventHandlers/ondurationchange

Firefox3.5+Safari?ChromeYes
Opera?EdgeYes
Edge (Legacy)NoInternet Explorer?
Firefox Android4+Safari iOS?Chrome AndroidYesWebView AndroidYesSamsung InternetYesOpera Android?
durationchange
onemptied

GlobalEventHandlers/onemptied

Firefox3.5+Safari?ChromeYes
Opera?EdgeYes
Edge (Legacy)NoInternet Explorer?
Firefox Android4+Safari iOS?Chrome AndroidYesWebView AndroidYesSamsung InternetYesOpera Android?
emptied
onended

GlobalEventHandlers/onended

Firefox3.5+Safari?ChromeYes
Opera?EdgeYes
Edge (Legacy)NoInternet Explorer?
Firefox Android4+Safari iOS?Chrome AndroidYesWebView AndroidYesSamsung InternetYesOpera Android?
ended
onformdata

GlobalEventHandlers/onformdata

Firefox72+SafariNoChrome77+
Opera64+Edge79+
Edge (Legacy)NoInternet ExplorerNo
Firefox AndroidNoSafari iOSNoChrome Android77+WebView Android77+Samsung Internet12.0+Opera Android55+
formdata
oninputinput
oninvalid

GlobalEventHandlers/oninvalid

FirefoxYesSafari?ChromeYes
OperaYesEdgeYes
Edge (Legacy)NoInternet Explorer?
Firefox AndroidYesSafari iOS?Chrome AndroidYesWebView AndroidYesSamsung InternetYesOpera AndroidYes
invalid
onkeydown

GlobalEventHandlers/onkeydown

FirefoxYesSafari?ChromeYes
Opera?EdgeYes
Edge (Legacy)18Internet Explorer?
Firefox AndroidYesSafari iOS?Chrome AndroidYesWebView AndroidYesSamsung InternetYesOpera Android?
keydown
onkeypress

GlobalEventHandlers/onkeypress

FirefoxYesSafari?ChromeYes
Opera?EdgeYes
Edge (Legacy)18Internet Explorer?
Firefox AndroidYesSafari iOS?Chrome AndroidYesWebView AndroidYesSamsung InternetYesOpera Android?
keypress
onkeyup

GlobalEventHandlers/onkeyup

FirefoxYesSafari?ChromeYes
Opera?EdgeYes
Edge (Legacy)18Internet Explorer?
Firefox AndroidYesSafari iOS?Chrome AndroidYesWebView AndroidYesSamsung InternetYesOpera Android?
keyup
onloadeddata

GlobalEventHandlers/onloadeddata

Firefox3.5+Safari?ChromeYes
Opera?EdgeYes
Edge (Legacy)NoInternet Explorer?
Firefox Android4+Safari iOS?Chrome AndroidYesWebView AndroidYesSamsung InternetYesOpera Android?
loadeddata
onloadedmetadata

GlobalEventHandlers/onloadedmetadata

Firefox3.5+Safari?ChromeYes
Opera?EdgeYes
Edge (Legacy)NoInternet Explorer?
Firefox Android4+Safari iOS?Chrome AndroidYesWebView AndroidYesSamsung InternetYesOpera Android?
loadedmetadata
onloadstart

GlobalEventHandlers/onloadstart

Support in all current engines.

Firefox52+SafariYesChromeYes
OperaYesEdgeYes
Edge (Legacy)12+Internet ExplorerYes
Firefox Android52+Safari iOSYesChrome AndroidYesWebView AndroidYesSamsung InternetYesOpera AndroidYes
loadstart
onmousedown

GlobalEventHandlers/onmousedown

Support in all current engines.

FirefoxYesSafariYesChromeYes
OperaYesEdgeYes
Edge (Legacy)12+Internet ExplorerYes
Firefox AndroidYesSafari iOSYesChrome AndroidYesWebView AndroidYesSamsung InternetYesOpera AndroidYes
mousedown
onmouseenter

GlobalEventHandlers/onmouseenter

Support in all current engines.

Firefox10+SafariYesChrome30+
Opera17+Edge79+
Edge (Legacy)12+Internet Explorer5.5+
Firefox Android10+Safari iOSYesChrome AndroidYesWebView AndroidYesSamsung InternetYesOpera Android18+
mouseenter
onmouseleave

GlobalEventHandlers/onmouseleave

Support in all current engines.

Firefox10+SafariYesChrome30+
Opera17+Edge79+
Edge (Legacy)12+Internet Explorer5.5+
Firefox Android10+Safari iOSYesChrome AndroidYesWebView AndroidYesSamsung InternetYesOpera Android18+
mouseleave
onmousemove

GlobalEventHandlers/onmousemove

Support in all current engines.

FirefoxYesSafariYesChromeYes
OperaYesEdgeYes
Edge (Legacy)12+Internet ExplorerYes
Firefox AndroidYesSafari iOSYesChrome AndroidYesWebView AndroidYesSamsung InternetYesOpera AndroidYes
mousemove
onmouseout

GlobalEventHandlers/onmouseout

Support in all current engines.

FirefoxYesSafariYesChromeYes
OperaYesEdgeYes
Edge (Legacy)12+Internet ExplorerYes
Firefox AndroidYesSafari iOSYesChrome AndroidYesWebView AndroidYesSamsung InternetYesOpera AndroidYes
mouseout
onmouseover

GlobalEventHandlers/onmouseover

Support in all current engines.

FirefoxYesSafariYesChromeYes
OperaYesEdgeYes
Edge (Legacy)12+Internet ExplorerYes
Firefox AndroidYesSafari iOSYesChrome AndroidYesWebView AndroidYesSamsung InternetYesOpera AndroidYes
mouseover
onmouseup

GlobalEventHandlers/onmouseup

Support in all current engines.

FirefoxYesSafariYesChromeYes
OperaYesEdgeYes
Edge (Legacy)12+Internet ExplorerYes
Firefox AndroidYesSafari iOSYesChrome AndroidYesWebView AndroidYesSamsung InternetYesOpera AndroidYes
mouseup
onpause

GlobalEventHandlers/onpause

Firefox3.5+Safari?ChromeYes
Opera?EdgeYes
Edge (Legacy)NoInternet Explorer?
Firefox Android4+Safari iOS?Chrome AndroidYesWebView AndroidYesSamsung InternetYesOpera Android?
pause
onplay

GlobalEventHandlers/onplay

Firefox3.5+Safari?ChromeYes
Opera?EdgeYes
Edge (Legacy)NoInternet Explorer?
Firefox Android4+Safari iOS?Chrome AndroidYesWebView AndroidYesSamsung InternetYesOpera Android?
play
onplayingplaying
onprogressprogress
onratechangeratechange
onreset

GlobalEventHandlers/onreset

Support in all current engines.

FirefoxYesSafariYesChromeYes
OperaYesEdgeYes
Edge (Legacy)18Internet Explorer?
Firefox AndroidYesSafari iOSYesChrome AndroidYesWebView AndroidYesSamsung InternetYesOpera AndroidYes
reset
onsecuritypolicyviolationsecuritypolicyviolation
onseekedseeked
onseekingseeking
onselect

GlobalEventHandlers/onselect

FirefoxYesSafari?ChromeYes
Opera?EdgeYes
Edge (Legacy)18Internet Explorer?
Firefox AndroidYesSafari iOS?Chrome AndroidYesWebView AndroidYesSamsung InternetYesOpera Android?
select
onslotchangeslotchange
onstalledstalled
onsubmit

GlobalEventHandlers/onsubmit

Support in all current engines.

FirefoxYesSafariYesChromeYes
OperaYesEdgeYes
Edge (Legacy)12+Internet ExplorerYes
Firefox AndroidYesSafari iOSYesChrome AndroidYesWebView AndroidYesSamsung InternetYesOpera AndroidYes
submit
onsuspendsuspend
ontimeupdatetimeupdate
ontoggletoggle
onvolumechangevolumechange
onwaitingwaiting
onwebkitanimationendwebkitAnimationEnd
onwebkitanimationiterationwebkitAnimationIteration
onwebkitanimationstartwebkitAnimationStart
onwebkittransitionendwebkitTransitionEnd
onwheel

GlobalEventHandlers/onwheel

Support in all current engines.

FirefoxYesSafariYesChrome61+
Opera48+Edge79+
Edge (Legacy)12+Internet ExplorerYes
Firefox AndroidYesSafari iOSYesChrome Android61+WebView Android61+Samsung Internet8.0+Opera Android45+
wheel

以下は、bodyおよびframeset要素以外のすべてのHTML要素イベントハンドラーコンテンツ属性イベントハンドラーIDL属性の両方としてサポートされるイベントハンドラー(およびそれに対応するイベントハンドラーイベント型)である。イベントハンドラーIDL属性として、すべてのDocumentオブジェクトでサポートされる。Windowオブジェクト自身でイベントハンドラーIDL属性として、すべてのWindowオブジェクトでサポートされる。対応するイベントハンドラーコンテンツ属性イベントハンドラーIDL属性が、そのWindowオブジェクトの関連付けられたDocumentが所有するすべてのbodyおよびframeset要素で公開される:

イベントハンドラーイベントハンドラーイベント型
onblur

GlobalEventHandlers/onblur

Support in all current engines.

FirefoxYesSafariYesChromeYes
OperaYesEdgeYes
Edge (Legacy)12+Internet ExplorerYes
Firefox AndroidYesSafari iOSYesChrome AndroidYesWebView AndroidYesSamsung InternetYesOpera AndroidYes
blur
onerror

GlobalEventHandlers/onerror

Support in all current engines.

Firefox1+Safari6+Chrome10+
Opera11.6+Edge79+
Edge (Legacy)12+Internet Explorer9+
Firefox Android4+Safari iOS6+Chrome Android18+WebView Android37+Samsung Internet1.0+Opera Android12+

HTMLMediaElement/onerror

Support in all current engines.

Firefox3.5+SafariYesChromeYes
OperaYesEdgeYes
Edge (Legacy)12+Internet Explorer9+
Firefox AndroidYesSafari iOSYesChrome AndroidYesWebView AndroidYesSamsung InternetYesOpera AndroidYes
error
onfocus

GlobalEventHandlers/onfocus

Support in all current engines.

FirefoxYesSafariYesChromeYes
OperaYesEdgeYes
Edge (Legacy)12+Internet ExplorerYes
Firefox AndroidYesSafari iOSYesChrome AndroidYesWebView AndroidYesSamsung InternetYesOpera AndroidYes
focus
onload

GlobalEventHandlers/onload

Support in all current engines.

Firefox1+Safari3+Chrome1+
Opera9+Edge79+
Edge (Legacy)12+Internet Explorer9+
Firefox Android4+Safari iOS1+Chrome Android18+WebView Android1+Samsung Internet1.0+Opera Android10.1+
load
onresize

GlobalEventHandlers/onresize

Support in all current engines.

FirefoxYesSafariYesChrome45+
Opera32+Edge79+
Edge (Legacy)12+Internet ExplorerYes
Firefox AndroidYesSafari iOSYesChrome Android45+WebView Android45+Samsung Internet5.0+Opera Android32+
resize
onscroll

GlobalEventHandlers/onscroll

FirefoxYesSafari?ChromeYes
Opera?EdgeYes
Edge (Legacy)18Internet Explorer?
Firefox AndroidYesSafari iOS?Chrome AndroidYesWebView AndroidYesSamsung InternetYesOpera Android?
scroll

この表の最初の列に挙げられるイベントハンドラー名前セットを、 Windowを反映するbody要素のイベントハンドラーセットと呼ぶ。


以下は、Windowオブジェクト自体のイベントハンドラーIDL属性として、Windowオブジェクト自身でサポートされるイベントハンドラー(および対応するイベントハンドラーイベント型)であり、そのWindowオブジェクトの関連付けられたDocumentが所有する対応するイベントハンドラーコンテンツ属性およびイベントハンドラーIDL属性がすべてのbody要素とframeset要素で公開される:

イベントハンドラーイベントハンドラーイベント型
onafterprint

WindowEventHandlers/onafterprint

Support in all current engines.

Firefox6+Safari13+Chrome63+
Opera50+Edge79+
Edge (Legacy)12+Internet ExplorerYes
Firefox Android?Safari iOS13+Chrome Android63+WebView Android63+Samsung Internet8.0+Opera Android46+
afterprint
onbeforeprint

WindowEventHandlers/onbeforeprint

Support in all current engines.

Firefox6+Safari13+Chrome63+
Opera50+Edge79+
Edge (Legacy)12+Internet ExplorerYes
Firefox Android?Safari iOS13+Chrome Android63+WebView Android63+Samsung Internet8.0+Opera Android46+
beforeprint
onbeforeunload

WindowEventHandlers/onbeforeunload

Support in all current engines.

Firefox1+Safari3+Chrome1+
Opera12+Edge79+
Edge (Legacy)12+Internet Explorer4+
Firefox Android4+Safari iOS1+Chrome Android18+WebView Android1+Samsung Internet1.0+Opera Android12+
beforeunload
onhashchange

WindowEventHandlers/onhashchange

Support in all current engines.

Firefox3.6+Safari5+Chrome5+
Opera10+Edge79+
Edge (Legacy)12+Internet Explorer8+
Firefox Android4+Safari iOS5+Chrome Android18+WebView Android37+Samsung Internet1.0+Opera Android10.1+
hashchange
onlanguagechange

WindowEventHandlers/onlanguagechange

Firefox32+Safari?Chrome37+
Opera24+Edge79+
Edge (Legacy)NoInternet ExplorerNo
Firefox Android4+Safari iOS?Chrome Android37+WebView Android37+Samsung Internet4.0+Opera Android24+
languagechange
onmessage

WindowEventHandlers/onmessage

Support in one engine only.

Firefox?Safari?Chrome60+
Opera47+Edge79+
Edge (Legacy)NoInternet Explorer?
Firefox Android?Safari iOS?Chrome Android60+WebView Android60+Samsung Internet8.0+Opera Android44+
message
onmessageerror

WindowEventHandlers/onmessageerror

Firefox57+Safari?Chrome60+
Opera47+Edge79+
Edge (Legacy)NoInternet Explorer?
Firefox Android57+Safari iOS?Chrome Android60+WebView Android60+Samsung Internet8.0+Opera Android44+
messageerror
onofflineoffline
ononlineonline
onpagehidepagehide
onpageshowpageshow
onpopstate

WindowEventHandlers/onpopstate

Support in all current engines.

Firefox4+Safari6+Chrome5+
Opera11.5+Edge79+
Edge (Legacy)12+Internet Explorer10+
Firefox Android4+Safari iOS5.1+Chrome Android18+WebView Android37+Samsung Internet1.0+Opera Android11.5+
popstate
onrejectionhandled

WindowEventHandlers/onrejectionhandled

Support in all current engines.

Firefox69+Safari11+Chrome49+
Opera36+Edge79+
Edge (Legacy)NoInternet ExplorerNo
Firefox Android🔰 68+Safari iOS11.3+Chrome Android49+WebView Android49+Samsung Internet5.0+Opera AndroidNo
rejectionhandled
onstorage

WindowEventHandlers/onstorage

Firefox45+Safari?Chrome1+
Opera15+Edge79+
Edge (Legacy)18Internet Explorer?
Firefox Android45+Safari iOS?Chrome Android18+WebView Android37+Samsung Internet1.0+Opera Android14+
storage
onunhandledrejection

WindowEventHandlers/onunhandledrejection

Support in all current engines.

Firefox69+Safari11+Chrome49+
Opera36+Edge79+
Edge (Legacy)NoInternet ExplorerNo
Firefox Android🔰 68+Safari iOS11.3+Chrome Android49+WebView Android49+Samsung Internet5.0+Opera AndroidNo
unhandledrejection
onunload

WindowEventHandlers/onunload

Support in all current engines.

FirefoxYesSafariYesChromeYes
OperaYesEdgeYes
Edge (Legacy)12+Internet ExplorerYes
Firefox AndroidYesSafari iOSYesChrome AndroidYesWebView AndroidYesSamsung InternetYesOpera AndroidYes
unload

以下は、イベントハンドラーコンテンツ属性とイベントハンドラーIDL属性の両方として、すべてのHTML要素でサポートされるイベントハンドラー(および対応するイベントハンドラーイベント型)である。 イベントハンドラーIDL属性として、すべてのDocumentオブジェクトでサポートされる:

イベントハンドラーイベントハンドラーイベント型
oncutcut
oncopycopy
onpastepaste

以下は、イベントハンドラーIDL属性としてDocumentオブジェクトでサポートされるイベントハンドラー(および対応するイベントハンドラーイベント型)である:

イベントハンドラーイベントハンドラーイベント型
onreadystatechangereadystatechange

8.2 WindowOrWorkerGlobalScopeミックスイン

WindowOrWorkerGlobalScope

Support in all current engines.

Firefox1+SafariYesChrome4+
OperaYesEdge79+
Edge (Legacy)12+Internet ExplorerYes
Firefox Android4+Safari iOSYesChrome Android18+WebView AndroidYesSamsung Internet1.0+Opera AndroidYes

WindowOrWorkerGlobalScopeミックスインは、WindowおよびWorkerGlobalScopeオブジェクトで公開されるAPIを使用するためのものである。

他の標準は、適切な参照と一緒に部分的なインターフェイスミックスインWindowOrWorkerGlobalScope { … };を使用して、さらに拡張することを勧める。

self . isSecureContext

このグローバルオブジェクトが安全なコンテキストを表すかどうかを返す。[SECURE-CONTEXTS]

self . origin

WindowOrWorkerGlobalScope/origin

Support in all current engines.

Firefox54+Safari11+Chrome59+
OperaNoEdge79+
Edge (Legacy)NoInternet ExplorerNo
Firefox Android54+Safari iOS11+Chrome Android59+WebView Android59+Samsung Internet7.0+Opera AndroidNo

文字列としてシリアライズされたグローバルオブジェクトの生成元を返す。

self . crossOriginIsolated

WindowOrWorkerGlobalScope/crossOriginIsolated

Support in one engine only.

Firefox72+SafariNoChromeNo
OperaNoEdgeNo
Edge (Legacy)NoInternet ExplorerNo
Firefox AndroidNoSafari iOSNoChrome AndroidNoWebView AndroidNoSamsung InternetNoOpera AndroidNo

このグローバルで実行しているスクリプトが生成元をまたいだ分離を必要とするAPIを使用できるかどうかを返す。これは、`Cross-Origin-Opener-Policy` および`Cross-Origin-Embedder-Policy` HTTPレスポンスヘッダーおよび"cross-origin-isolated"機能に依存する。

開発者は、location.originよりもself.originを使用することを強く勧める。前者は環境の生成元を、後者は環境のURLを返す。https://stargate.example/文書で次のスクリプトを実行することを想像してみる:

var frame = document.createElement("iframe")
frame.onload = function() {
  var frameWin = frame.contentWindow
  console.log(frameWin.location.origin) // "null"
  console.log(frameWin.origin) // "https://stargate.example"
}
document.body.appendChild(frame)

self.originの方がより信頼性の高いセキュリティ指標となる。

8.3 Base64ユーティリティメソッド

WindowOrWorkerGlobalScope/atob

Support in all current engines.

Firefox1+Safari3+Chrome4+
Opera10.5+Edge79+
Edge (Legacy)12+Internet Explorer10+
Firefox Android4+Safari iOS1+Chrome Android18+WebView Android37+Samsung Internet1.0+Opera Android11+
caniuse.com table

atob()およびbtoa()メソッドは、開発者がbase64エンコーディングとの間でコンテンツを変換することを可能にする。

これらAPIにおいて、簡略のために、"b"は"binary"、"a"は"ASCII"を表すと考えることができる。ただし実際には、主に歴史的な理由で、これらの関数の入力と出力の両方にはUnicode文字列である。

result = self . btoa( data )

WindowOrWorkerGlobalScope/btoa

Support in all current engines.

Firefox1+Safari3+Chrome4+
Opera10.5+Edge79+
Edge (Legacy)12+Internet Explorer10+
Firefox Android4+Safari iOS1+Chrome Android18+WebView Android37+Samsung Internet1.0+Opera Android11+

入力データを取得し、U+0000からU+00FFまでの範囲で文字のみを含むUnicode文字列の形式で、それぞれ値0x00から0xFFまでを持つバイナリーバイトを表し、そのbase64表現に変換したものを返す。

入力文字列に範囲外の文字が含まれる場合、"InvalidCharacterError" DOMExceptionを投げる。

result = self . atob( data )

WindowOrWorkerGlobalScope/atob

Support in all current engines.

Firefox1+Safari3+Chrome4+
Opera10.5+Edge79+
Edge (Legacy)12+Internet Explorer10+
Firefox Android4+Safari iOS1+Chrome Android18+WebView Android37+Samsung Internet1.0+Opera Android11+

入力データを取得し、base64でエンコードされたバイナリーデータを含むUnicode文字列の形式で、これをデコードし、それぞれ0x00から0xFFまでの値を持つバイナリーバイトを表す、そのバイナリーデータに対応した、範囲U+0000からU+00FFまでの文字から成る文字列を返す。

入力文字列が妥当なbase64データではない場合、"InvalidCharacterError" DOMExceptionを投げる。