ウィンドウ管理

W3C作業草案,

この文書の詳細
このバージョン:
https://www.w3.org/TR/2026/WD-window-management-20260828/
最新の公開バージョン:
https://www.w3.org/TR/window-management/
編集者草案:
https://w3c.github.io/window-management/
以前のバージョン:
履歴:
https://www.w3.org/standards/history/window-management/
フィードバック:
GitHub
仕様内にインライン表示
編集者:
Google Inc.
元編集者:
Google Inc.
テストスイート:
https://github.com/web-platform-tests/wpt/tree/master/window-management
https://github.com/web-platform-tests/wpt/tree/master/screen-details

概要

この文書は、スクリプトがデバイスに画面に関する情報を問い合わせ、特定の画面にコンテンツを 配置できるようにするウェブプラットフォーム API を定義します。

この文書のステータス

この節では、この文書の公開時点におけるステータスについて説明します。現在の W3C 公開文書の一覧およびこの技術報告書の最新版は、W3C 標準および草案の索引で確認できます。

この文書は、Second Screen Working Group により、勧告 トラックを使用して作業草案として公開されました。この文書は、W3C 勧告となることを意図しています。

Second Screen Working Group は、グループが まだ対応していないすべてのバグ報告の一覧を管理しています。この草案では、ワーキンググループで引き続き 議論する必要がある保留中の課題の一部を強調しています。これらの課題が妥当であるかどうかを含め、その結果について 決定は下されていません。未解決の課題について、提案する仕様テキストを含むプルリクエストを 強く推奨します。

作業草案としての公開は、 W3C およびその会員による承認を意味しません。この文書は草案であり、 いつでも他の文書によって更新、置換、または廃止される可能性があります。この文書を進行中の作業以外のものとして 引用することは不適切です。

この文書は、W3C 特許ポリシーの下で活動するグループによって作成されました。W3C は、グループの成果物に関連して行われた特許開示の公開一覧を 管理しています。そのページには、特許を開示するための手順も含まれています。ある個人が、必須 クレームを含むと考える特許について実際に知っている場合、その個人は、W3C 特許ポリシーの第 6 節に従って、その情報を開示しなければなりません。

この文書には、2025 年 8 月 18 日付 W3C プロセス文書が適用されます。

1. はじめに

この節は非規範的です。

オペレーティングシステムでは通常、ユーザーが単一のデバイスに複数の画面を接続し、全体的な視覚ワークスペースを 拡張するように仮想的に配置できます。

さまざまなアプリケーションがプラットフォームのツールを使用して、このようなマルチスクリーン環境にコンテンツを配置していますが、 ウェブアプリケーション開発者は、一般に単一画面の使用を中心として設計された既存の API によって制限されています。

マルチスクリーンデバイスおよびアプリケーションがユーザー体験においてより一般的かつ重要な部分になるにつれて、その拡張された 視覚環境を活用するための情報とツールをウェブ開発者に提供することが、より重要になります。

この仕様は、WindowScreen、 および FullscreenOptions API を段階的に拡張し、新しい ScreenDetails および ScreenDetailed インターフェイスを導入します。これらの変更により、ウェブアプリケーションは特定の画面にコンテンツを配置することで、魅力的な マルチスクリーン体験を提供できます。

1.1. 動機となるユースケース

この仕様の目的は、複数の画面を持つウェブアプリケーションユーザーに、より優れた体験を提供できるようにすることです。 設計の参考となるユースケースには、次のものがあります。

1.2. 使用方法の概要

マルチスクリーン体験をサポートするために、この API によりウェブアプリケーションは次のことができます。

  1. デバイスに複数の画面があるかどうかを検出する

  2. 特定の画面にコンテンツを配置するために必要な情報を要求する

  3. 画面が追加または削除されたことを検出する

  4. 現在の画面またはその属性が変更されたことを検出する

  5. 特定の画面に要素を全画面表示する

  6. 特定の画面にウィンドウを配置する

  7. 単一の一時的なユーザーアクティベーションからマルチスクリーン体験を開始する

API の基本的な使用例は次のとおりです。

// デバイスに複数の画面があるかどうかを検出します。
if (window.screen.isExtended) {
  // 特定の画面にコンテンツを配置するために必要な情報を要求します。
  const screenDetails = await window.getScreenDetails();

  // 画面が追加または削除されたことを検出します。
  screenDetails.addEventListener('screenschange', onScreensChange);

  // 現在の \`ScreenDetailed\` またはその属性が変更されたことを検出します。
  screenDetails.addEventListener('currentscreenchange', onCurrentScreenChange);

  // プライマリ画面を見つけ、そこにコンテンツを全画面表示します。
  const primaryScreen = screenDetails.screens.find(s => s.isPrimary);
  document.documentElement.requestFullscreen({screen : primaryScreen});

  // 別の画面を見つけ、その利用可能領域を新しいウィンドウで埋めます。
  const otherScreen = screenDetails.screens.find(s => s !== primaryScreen);
  window.open(url, '_blank', \`left=${otherScreen.availLeft},\` +
                             \`top=${otherScreen.availTop},\` +
                             \`width=${otherScreen.availWidth},\` +
                             \`height=${otherScreen.availHeight}\`);
} else {
  // 従来の \`Screen\` インターフェイスの属性が変更されたことを検出します。
  window.screen.addEventListener('change', onScreenChange);

  // 従来の単一画面環境内にコンテンツを配置します...
}

1.2.1. 複数の画面の存在を検出する

マルチスクリーン体験をサポートするうえで主要な問題は、コンテンツを配置するときに使用できる複数の画面がデバイスに 存在するかどうかです。これらの画面は、デバイスに内蔵されているもの(ノートパソコンのディスプレイパネルなど)、 有線でデバイスに接続されているもの(HDMI ケーブルで接続されたコンピューターとモニターなど)、その他の方法で デバイスに接続されているもの(Mac と iPad の Sidecar 機能など)、またはディスプレイデバイスの仮想化によるものがあります。 これは、権限プロンプトを表示せずにセキュアコンテキストへ公開される isExtended ブール値によって提供されます。

if (screen.isExtended) {
  // ユーザーにマルチスクリーン操作を提供します。
}

1.2.2. Screen 属性の変更を検出する

従来の Screen 属性の変更を監視することは、単一画面デバイスであってもコンテンツを適応させるために有用です。さらに、 isExtended を監視することは、単一画面構成とマルチスクリーン構成の間の移行を検出するために有用です。ポーリングを回避するため、 change イベントが Screen オブジェクトで発火されます。

screen.addEventListener('change', e => {
  // 従来の \`Screen\` インターフェイスの属性が変更されました。
});

1.2.3. 詳細な画面情報を要求する

デバイスが使用する画面に関する詳細情報は、getScreenDetails() メソッドを介して要求できます。このメソッドは、ユーザーに権限を要求することがあります。結果として得られる ScreenDetails オブジェクトにより、開発者は画面を列挙し、その属性を調べ、変更を監視できます。

try {
  // 画面の詳細を要求し、その情報を直ちに処理します。
  const screenDetails = await window.getScreenDetails();
  processScreenDetails(screenDetails);

  // 画面の集合が変更されたとき、更新された画面の詳細を処理します。
  screenDetails.onscreenschange = () => {
    processScreenDetails(screenDetails);
  };
} catch (err) {
  console.error(err);
  // 拒否された権限およびその他のエラーを処理します。
}

function processScreenDetails(screenDetails) {
  // 想定されるヘルパーを使用して、画面を一覧表示する UI を構築します。
  clearScreenList();
  screenDetails.screens.forEach(screen => {
    addToScreenList({name: screen.label, screen: screen});
    // 特定の画面の詳細が変更されたとき、更新された画面の詳細を処理します。
    screen.onchange = () => {
      processScreenDetails(screenDetails);
    };
  });
  selectCurrentInScreenList(screenDetails.currentScreen);
}

1.2.4. 特定の画面に全画面コンテンツを配置する

一般的なマルチスクリーンのユースケースは、特定の画面に一部のコンテンツを全画面表示することです。画面は対話的に選択することも、 画面の属性またはユーザーによる以前の選択に基づいて自動的に選択することもできます。選択された画面は、requestFullscreen() メソッドに渡すことができます。

// 選択された \`ScreenDetailed\` インスタンスを返す想定のヘルパーを呼び出します。
const screenDetailed = getScreenForSlideshow();

// 選択された画面に特定の要素を全画面表示するよう要求します。
slideshowElement.requestFullscreen({ screen: screenDetailed });

1.2.5. 特定の画面にウィンドウを配置する

もう一つの一般的なマルチスクリーンのユースケースは、特定の画面にウィンドウを配置することです。これは、ScreenDetailed インターフェイスで提供される座標を、既存の open() および moveTo() メソッドとともに使用することで実現できます。

function openCenteredWindow(url, screenDetailed, w, h) {
  // 対象画面の中央にウィンドウを配置する座標を計算します。
  const l = screenDetailed.left + Math.round(screenDetailed.width - w) / 2;
  const t = screenDetailed.top + Math.round(screenDetailed.height - h) / 2;

  // 要求された寸法でウィンドウを開きます。
  return window.open(url, '_blank', \`left=${l},top=${t},width=${w},height=${h}\`);
}

1.2.6. マルチスクリーン体験を開始する

よく要求されるマルチスクリーンのユースケースは、単一のユーザーアクティベーションから魅力的なマルチスクリーン体験を 開始することです。具体的に提案されている形式の一つは、単一のユーザージェスチャーによって、サイトが§ 1.2.4 特定の画面に全画面コンテンツを 配置すること、および§ 1.2.5 特定の画面に ウィンドウを配置することを許可するものです。これは、単一のイベントリスナー内で、最初にマルチスクリーンデバイスの 特定の画面で全画面表示を要求し、次にデバイスの別の画面でポップアップウィンドウを開くことで実現できます。

initiateMultiScreenExperienceButton.addEventListener('click', async () => {
  // プライマリ画面を見つけ、そこにコンテンツを全画面表示します。
  const primaryScreen = screenDetails.screens.find(s => s.isPrimary);
  await document.documentElement.requestFullscreen({screen : primaryScreen});

  // 別の画面を見つけ、その利用可能領域を新しいウィンドウで埋めます。
  const otherScreen = screenDetails.screens.find(s => s !== primaryScreen);
  window.open(url, '_blank', \`left=${otherScreen.availLeft},\` +
                             \`top=${otherScreen.availTop},\` +
                             \`width=${otherScreen.availWidth},\` +
                             \`height=${otherScreen.availHeight}\`);
});

2. 概念

この仕様の概念は、CSSOM-View-1 作業草案およびCSSOM-View-1 編集者草案[HTML]、ならびに [Fullscreen] の概念を基礎としています。

2.1. 画面

ユーザーエージェントをホストするデバイスには、視覚コンテンツの表示に使用される単一の画面または複数の画面があります。デバイスが使用する画面の集合は、ユーザーエージェントの実行中に、 デバイスのハードウェアまたはソフトウェア構成の変更を反映して変化することがあります。

注: 画面構成の変更の基本的な例には、HDMI ケーブルを使用して テレビまたはプロジェクターをノートパソコンに接続すること、ノートパソコンの蓋を閉じて内蔵 LCD パネルを無効にすること、 および接続されている LCD コンピューターモニターの表示解像度を変更することが含まれます。

画面には色深度があり、 これは画面のピクセルの色深度です。

画面には、WindowdevicePixelRatio と同様のデバイスピクセル比があり、これは次のアルゴリズムの結果です。

  1. CSS ピクセルサイズを、CSS ピクセルのサイズとします。

  2. デバイスピクセルサイズを、ピクセルの垂直方向のサイズとします。

  3. CSS ピクセルサイズデバイスピクセルサイズで除算した結果を返します。

画面には向きがあり、 これは [screen-orientation] で説明されています。

画面にはラベルがあり、これは ユーザーが画面を識別し区別できるように、画面を意味のある形で説明する文字列です。

注: ラベルは、ユーザーエージェントが選択する任意の文字列にできます。 例えば、デバイスに対する画面の関係を "internal""external" のように説明したり、 "640×480" のように寸法を含めたり、VESA E-EDID データから "Acme Telletube 1000x" のようなハードウェアモデル情報を含めたり、"screen 1""screen 2" のような識別番号を含めたり、これらすべてを含めたりできます。基盤となるディスプレイの詳細が 不明な場合、またはユーザーエージェントがその情報を隠すことを選択した場合、ラベルは空文字列にできます。アプリケーションは、 ラベルにデバイスの種類、モデル、寸法、密度などの特定の情報が含まれていると仮定できません。

多くの画面属性をアクティブフィンガープリンティングに使用できる一方で、特にラベルとして使用する文字列は、 一意性を最小限に抑えるため慎重に検討するべきです。例えば、デバイスのシリアル番号を含めることは不適切な選択です。

デバイス ピクセル比にはページズームを含めるべきでしょうか?

2.2. 画面ピクセル

画面にはピクセルがあり、これは 直接プログラムできる最小の画面構成要素です。各ピクセルは一つの色を表示します。

注: 液晶ディスプレイ(LCD)では、各ピクセルは 三つの構成要素から成ります。各構成要素は、強度を変化させられる赤、緑、青の光です。 ピクセル構成要素に関する考察(サブピクセルレンダリング)は、この仕様の範囲外です。

注: 一部の画面は、物理ハードウェア固有の構成とは異なる 解像度でコンテンツを表示するよう設定できます。例えば、ハードウェア解像度が 2560×1440 のモニターを、デバイスによって 1920×1080 の表示解像度で動作するよう設定できます。

ピクセルには色深度があり、これはピクセルが表示できる色を表すために使用されるビット数です。

注: 一般的なレンダリングシステムの一部では、ピクセルが 24 の色深度を持つものとして モデル化されます。これら三つの 8 ビットグループは、LCD ピクセルの赤、緑、青の サブピクセルの強度を表します。

2.3. 画面領域

画面には画面領域があり、 これはオペレーティングシステムおよびクライアントアプリケーションの視覚コンテンツをユーザーに提示するために使用される、 ピクセルの矩形の二次元グリッドです。これは、特定の画面ウェブに公開される画面領域に対応します。

画面領域にはがあり、これは画面領域の矩形ピクセルグリッドの水平方向に沿ったピクセル数です。

画面領域には高さがあり、これは画面領域の矩形ピクセルグリッドの垂直方向に沿ったピクセル数です。

注: グリッドサイズは通常、<>×<高さ> と表されます。例えば、 1920×1080 の画面領域には、が 1920 ピクセル、高さが 1080 ピクセルのグリッドがあります。

注: CSSOM View § 2.3 ウェブに公開される画面情報で規定されているように、ユーザーエージェントはユーザーのプライバシーを保護するために、 出力デバイスの画面に関する情報を隠すことを選択できます。この場合、画面領域ビューポートと等しくなることがあります。

2.4. 利用可能な画面領域

画面には利用可能な 画面領域があり、これはオペレーティングシステムがウェブアプリケーションのウィンドウ配置を許可する画面領域の矩形の 部分集合です。矩形の辺は、画面領域の辺と平行です。この領域には、タスクバーやメニューバーなど、 オペレーティングシステム自身のユーザーインターフェイス要素のために予約されている画面領域の部分は含まれません。 これは、特定の画面ウェブに公開される利用可能な画面領域に相当します。

画面利用可能な幅は、利用可能な画面 領域の矩形ピクセルグリッドの水平方向に沿ったピクセル数です。

画面利用可能な高さは、利用可能な画面 領域の矩形ピクセルグリッドの垂直方向に沿ったピクセル数です。

2.5. 仮想画面配置

デバイスには、デバイスの視覚環境全体を構成する画面の相対的な配置を定義する仮想画面配置があります。この配置は通常、すべての方向に広がる二次元平面上に 構成され、マルチスクリーン 原点から右方向および下方向にそれぞれ増加する (x, y) 座標を持ちます。マルチスクリーン原点は、仮想画面配置の (0, 0) 座標を定義する、実装定義の点です。

一般的な慣例では、マルチスクリーン原点プライマリ画面の左上に設定しますが、仮想画面 配置内の任意の点に設定できます。すべての画面画面領域は、仮想画面配置の矩形の 部分集合を表示するビューです。

次の図は、複数の画面仮想画面 配置内に配置する方法の例と、考えられるマルチスクリーン原点を示しています。

画面およびマルチスクリーン原点のさまざまな例を示す図

注: Second Screen Community Group の草案報告書フォームファクターの説明では、関連する用語と概念モデルを 検討しています。

2.6. 画面位置

画面には画面 位置があり、これはマルチスクリーン原点を基準とした仮想画面 配置内における画面領域の (x, y) 座標です。座標は負になることがあり、通常は (x, y) と表されます。

2.7. 利用可能な画面位置

画面には利用可能な 画面位置があり、これはマルチスクリーン原点を基準とした仮想 画面配置内における利用可能な画面領域の (x, y) 座標です。座標は負になることがあり、 通常は (x, y) と表されます。

2.8. プライマリ画面

ユーザーエージェントをホストするデバイスには、厳密に一つのプライマリ画面があります。 その他すべての画面セカンダリとみなされます。

注: プライマリ画面は通常、Windows のタスクバーや macOS の Dock など、タスク管理用のオペレーティングシステムのユーザーインターフェイスを表示します。

画面プライマリまたはセカンダリとしての指定は、ユーザーエージェントの実行中に変更されることがあります。

注: ほとんどのオペレーティングシステムでは、Windows の コントロールパネルや macOS の環境設定アプリケーションなどの管理用ユーザーインターフェイスを使用して、ユーザーが プライマリ画面を選択できます。

2.9. 内部画面

画面は、内部または外部として指定されることがあります。

外部画面は、その視覚出力を提供するデバイスとは 別に製造されます。外部画面が一つのデバイスから 切断され、別のデバイスに接続されることは珍しくありません。

注: 例えば、デスクトップコンピューターは、HDMI ケーブルで 接続された外部画面に視覚出力を表示できます。 コンピューターの使用中に HDMI ケーブルを接続または切断でき、コンピューターはそのハードウェア構成の変更に合わせて 視覚環境を適応させます。

内部画面は通常、製造時にデバイスに取り付けられます。 内部画面は、ユーザーが取り外すことを意図していません。 ただし、内部画面であっても、ユーザーエージェントの実行中に有効または無効にできます。

注: 例えば、ノートパソコンは蓋を閉じたときに内部画面と入力デバイスを無効にすることがあります。 この構成でも、ノートパソコンは外部画面と入力デバイスを使用して引き続き利用できます。蓋が閉じている間、 無効になった内部画面を、デバイスが使用する画面として報告することはできません。

2.10. 現在の画面

Window コンテキストで実行されるスクリプトは、screen 属性にアクセスできます。その Screen オブジェクトは、現在ウィンドウを表示している画面である現在の画面のプロパティを反映します。

注: 多くのオペレーティングシステムでは、ウィンドウを異なる プロパティを持つ複数の画面にまたがって表示したり、「非表示」状態にしてどの画面にも表示しなかったりできます。 オペレーティングシステムおよびユーザーエージェントは、特定の Window に対する正規の画面、例えばウィンドウと交差する領域が最大の画面を定義するものと想定されます。

2.11. 観測可能な画面プロパティ

画面基本的な観測可能プロパティは次のとおりです。

画面高度な観測可能プロパティは次のとおりです。

2.12. ウィンドウ表示状態

トップレベル閲覧コンテキストには、次のいずれかになり得る、関連付けられた表示状態があります。

通常

ウィンドウは通常状態です(最小化、最大化、全画面のいずれでもありません)。

最小化

ウィンドウは最小化されています。

最大化

ウィンドウは最大化されています。

全画面

ウィンドウは全画面モードです。

3. API

3.1. Screen インターフェイスの拡張

CSSOM View Module 仕様は、この仕様によって拡張される Screen インターフェイスを定義します。

window . screen . isExtended

デバイスの視覚出力が複数の画面にまたがって拡張されている場合、true を返します。

window . screen . onchange

ウィンドウの画面またはその属性が変更されたときに発火されます。

partial interface Screen /* : EventTarget */ {
  [SecureContext]
  readonly attribute boolean isExtended;

  [SecureContext]
  attribute EventHandler onchange;
};

CSSOM View § 4.3 Screen インターフェイスにおいて、ScreenEventTarget から派生させます。

3.1.1. isExtended 属性

isExtended の取得手順は次のとおりです。

  1. this関連する大域オブジェクト関連付けられた Documentが、「window-management」 という名前のポリシー制御機能使用を許可されていない場合、false を返し、これらの手順を中止します。

  2. デバイスに複数の画面がある場合は true を返し、それ以外の場合は false を返します。

3.1.2. onchange 属性

onchange 属性は、イベントハンドラー IDL 属性であり、そのイベントハンドラーのイベント型change です。

Window window現在の 画面基本的な観測可能プロパティのいずれかが変更された場合、 window関連する大域オブジェクトで、ウィンドウ配置タスクソースを使用して大域タスクをキューに追加し、windowscreen 属性が参照する Screen オブジェクトで、change という名前のイベントを発火します。

3.2. Window インターフェイスの拡張

[HTML] 標準は、この仕様によって 拡張される Window インターフェイスを定義します。

window . getScreenDetails()

デバイスの画面に関する情報を持つ ScreenDetails オブジェクトで充足される promise を返します。権限が拒否された場合、promise は拒否されます。

partial interface Window {
  [SecureContext]
  Promise<ScreenDetails> getScreenDetails();

  [SecureContext]
  Promise<undefined> minimize();

  [SecureContext]
  Promise<undefined> maximize();

  [SecureContext]
  Promise<undefined> restore();

  [SecureContext]
  Promise<undefined> setResizable(boolean resizable);
};

3.2.1. getScreenDetails() メソッド

getScreenDetails() メソッドは非同期に完了し、ウィンドウ配置タスクソースに作業をキューイングします。

Window のインスタンスは、[[screenDetails]] という名前の内部スロットを持つよう作成され、その初期値は undefined です。

getScreenDetails() メソッドの手順は次のとおりです。

  1. promise新しい promiseとします。

  2. this関連する大域オブジェクト関連付けられた Documentが、「window-management」 という名前のポリシー制御機能使用を許可されていない場合、promise"NotAllowedError" DOMException拒否し、これらの手順を中止します。

  3. 次の手順を並行して実行します。

    1. permissionStateを、「window-management」を 使用する権限を要求した結果とします。

    2. this関連する大域オブジェクトで、ウィンドウ配置タスクソースを使用して大域タスクをキューに追加し、次の手順を実行します。

      1. permissionStateが「denied」 である場合、promise"NotAllowedError" DOMException拒否し、これらの手順を中止します。

      2. this.[[screenDetails]]undefined である場合、this.[[screenDetails]] を新しい ScreenDetails オブジェクトに設定します。

      3. promisethis.[[screenDetails]]解決します。

  4. promiseを返します。

3.2.2. アルゴリズム: ウィンドウ表示状態の変更を要求する

対象表示状態 targetState へのウィンドウ表示状態の変更を要求するには、次の手順を実行します。

  1. promise新しい promiseとします。

  2. this関連する大域オブジェクト関連付けられた Documentが、「window-management」 という名前のポリシー制御機能使用を許可されていない場合、promise"NotAllowedError" DOMException拒否し、これらの手順を中止します。

  3. this関連する大域オブジェクト関連付けられた Documentインストール済みウェブアプリケーションではない場合、 promise"NotAllowedError" DOMException拒否し、これらの手順を中止します。

  4. this関連する大域オブジェクト一時的なアクティベーションを持たない場合、promise"NotAllowedError" DOMException拒否し、 これらの手順を中止します。

  5. 次の手順を並行して実行します。

    1. permissionStateを、「window-management」を 使用する権限を要求した結果とします。

    2. this関連する大域オブジェクトで、ウィンドウ配置タスクソースを使用して大域タスクをキューに追加し、次の手順を実行します。

      1. permissionStateが「denied」 である場合、promise"NotAllowedError" DOMException拒否し、これらの手順を中止します。

      2. this関連する大域オブジェクトユーザーアクティベーションを消費します。

      3. stateをウィンドウの表示状態とします。

      4. 次のいずれかが true の場合、promiseを undefined で解決し、これらの手順を中止します。

        • targetStateが "minimized" であり、state最小化である。

        • targetStateが "maximized" であり、state最大化である。

        • targetStateが "restored" であり、state通常である。

      5. targetStateが "minimized" または "maximized" である場合:

        1. ウィンドウの表示状態を targetState に変更するようユーザーエージェントに 要求します。

      6. そうではなく、targetStateが "restored" である場合:

        1. state最小化である場合、 ウィンドウの最小化を解除し、最小化される前の表示状態に復元するようユーザーエージェントに 要求します。

        2. そうではなく、state全画面である場合、 全画面表示を終了し、全画面表示に入る前の表示状態にウィンドウを復元するよう ユーザーエージェントに要求します。

        3. そうではなく、state最大化である場合、 ウィンドウの最大化を解除し、通常表示状態に復元するよう ユーザーエージェントに要求します。

      7. 操作が成功した場合、promiseを undefined で解決します。

      8. 操作が失敗した場合、promise"NotAllowedError" DOMException拒否し、これらの手順を中止します。

  6. promiseを返します。

3.2.3. minimize() メソッド

minimize() メソッドは非同期に完了し、ウィンドウ配置タスク ソースに作業をキューイングします。

minimize() メソッドの手順は次のとおりです。

  1. "minimized" を指定してウィンドウ表示状態の変更を要求する アルゴリズムを実行した結果を返します。

3.2.4. maximize() メソッド

maximize() メソッドは非同期に完了し、ウィンドウ配置タスク ソースに作業をキューイングします。

maximize() メソッドの手順は次のとおりです。

  1. "maximized" を指定してウィンドウ表示状態の変更を 要求するアルゴリズムを実行した結果を返します。

3.2.5. restore() メソッド

restore() メソッドは非同期に完了し、ウィンドウ配置タスク ソースに作業をキューイングします。

restore() メソッドの手順は次のとおりです。

  1. "restored" を指定してウィンドウ表示状態の変更を 要求するアルゴリズムを実行した結果を返します。

3.2.6. setResizable() メソッド

setResizable() メソッドは非同期に完了し、ウィンドウ配置タスク ソースに作業をキューイングします。

setResizable(resizable) メソッドの手順は 次のとおりです。

  1. promise新しい promiseとします。

  2. this関連する大域オブジェクト関連付けられた Documentが、「window-management」 という名前のポリシー制御機能使用を許可されていない場合、promise"NotAllowedError" DOMException拒否し、これらの手順を中止します。

  3. this関連する大域オブジェクト関連付けられた Documentインストール済みウェブアプリケーションではない場合、 promise"NotAllowedError" DOMException拒否し、これらの手順を中止します。

  4. 次の手順を並行して実行します。

    1. permissionStateを、「window-management」を 使用する権限を要求した結果とします。

    2. this関連する大域オブジェクトで、ウィンドウ配置タスクソースを使用して大域タスクをキューに追加し、次の手順を実行します。

      1. permissionStateが「denied」 である場合、promise"NotAllowedError" DOMException拒否し、これらの手順を中止します。

      2. ウィンドウのサイズ変更可能状態を resizable に設定するようユーザーエージェントに 要求します。

      3. 操作が成功した場合、promiseを undefined で解決します。

      4. 操作が失敗した場合、promise"NotAllowedError" DOMException拒否し、これらの手順を中止します。

  5. promiseを返します。

3.2.7. Window の属性およびメソッド定義の変更

次の Window の属性およびメソッド定義は、マルチスクリーン 原点を基準として値を返し解釈するよう更新されます。

3.2.8. Window.open() メソッド定義の変更

Window のインスタンスは、[[targetScreenFullscreen]] という名前の内部スロットを持つよう作成されます。このスロットは、 最後のアクティベーションのタイムスタンプと同等のデータモデルを持ちます。 二つの場合を除き、これは DOMHighResTimeStamp 値に対応します。正の無限大は、Window が一度もアクティブ化されていないことを示し、負の無限大は、ユーザーアクティベーションによって制限される API (HTML § 6.4.3 ユーザーアクティベーションによって制限される API を参照)が、その Window の最後のユーザーアクティベーションを消費したことを示します。初期値は正の無限大です。

Window.open() メソッドの手順、およびその中で呼び出されるメソッドの手順は、任意で次の処理を行うよう更新されます。

  1. 関連する大域オブジェクト現在の高解像度時刻が、this.[[targetScreenFullscreen]] 以上であり、かつ this.[[targetScreenFullscreen]]一時的なアクティベーションの持続時間を加えた値より小さい場合、 一時的なアクティベーション状態の要件を免除します。

  2. ユーザーアクティベーションを消費する手順を実行した直後に、this.[[targetScreenFullscreen]] を負の無限大に設定します。

3.3. ScreenDetails インターフェイス

screenDetails . screens

各画面を説明する ScreenDetailed オブジェクトの配列を返します。

screenDetails . currentScreen

現在の画面を説明する ScreenDetailed オブジェクトを返します。このオブジェクトは、Window.screen と同じ画面を説明しますが、 それより多くの情報を提供します。

screenDetails . onscreenschange

画面の集合が変更されたとき、 すなわち画面が追加または削除されたときに 発火されます。

screenDetails . oncurrentscreenchange

現在の画面またはその属性が変更されたとき、すなわちウィンドウが別の画面へ移動したとき、または現在の画面のプロパティが変更されたときに発火されます。

[Exposed=Window, SecureContext]
interface ScreenDetails : EventTarget {
  readonly attribute FrozenArray<ScreenDetailed> screens;
  readonly attribute ScreenDetailed currentScreen;

  attribute EventHandler onscreenschange;
  attribute EventHandler oncurrentscreenchange;
};

3.3.1. screens 属性

screens の取得手順は次のとおりです。

  1. screensを新しいリストとします。

  2. デバイスの画面の各 screen について、次の手順を実行します。

    1. aを、screenを説明する ScreenDetailed オブジェクトとします。

    2. ascreens付加します。

  3. 画面 順序付けアルゴリズムを使用して、screensを昇順に並べ替えた結果を返します。

画面順序付け アルゴリズムは、次の手順が true を返す場合に、画面 a画面 b より小さいものと定義します。

  1. a画面位置の x 座標が、b画面位置の x 座標より小さい場合、true を返します。

  2. b画面位置の x 座標が、a画面位置の x 座標より小さい場合、false を返します。

  3. a画面位置の y 座標が、b画面位置の y 座標より小さい場合、true を返します。

  4. それ以外の場合、false を返します。

3.3.2. currentScreen 属性

currentScreen の取得手順は、this に関連付けられた Window オブジェクトの現在の 画面を表す、screens 内の ScreenDetailed オブジェクトを返すことです。

注: screens 内のどの ScreenDetailed オブジェクトが、Window現在の 画面を表すかは、オペレーティングシステムおよびユーザーエージェントによって定義されるものと想定されます。これは、 特定のウィンドウに対する正規の画面、例えばウィンドウと交差する領域が最大の画面を表す Window.screen に対応します。

注: currentScreen は、そのような比較を容易にするため、例えば screenDetails.screens.find(s => s !== screenDetails.currentScreen); のように、screens 内のいずれかのエントリと === で比較できることが保証されます。そのため、currentScreen[SameObject] としてマークすることはできません。これに関連して、currentScreen に追加された change イベントリスナーには、その特定の画面に関する変更のみが通知されます。一方、currentscreenchange イベントリスナーには、ウィンドウがある画面から別の画面へ移動した後など、その時点でウィンドウの現在の画面となっている、いずれの画面に関する変更も通知されます。

3.3.3. onscreenschange 属性

onscreenschange 属性は、イベントハンドラー IDL 属性であり、そのイベントハンドラーのイベント型screenschange です。

ScreenDetails オブジェクト screenDetailsscreens の集合が変更された場合、screenDetails関連する大域オブジェクトで、ウィンドウ配置タスクソースを使用して大域タスクをキューに追加し、screenDetailsscreenschange という名前のイベントを 発火します。

3.3.4. oncurrentscreenchange 属性

oncurrentscreenchange 属性は、イベントハンドラー IDL 属性であり、そのイベントハンドラーのイベント型currentscreenchange です。

Window window現在の画面が、 ある画面から別の画面へ変更された場合 (例えば、Window が別のディスプレイへ移動された場合)、または window現在の画面基本的な 観測可能プロパティまたは高度な観測可能プロパティのいずれかが変更された場合、 window関連する大域オブジェクトで、ウィンドウ配置タスクソースを使用して大域タスクをキューに追加し、window の内部スロット [[screenDetails]] に格納された ScreenDetails オブジェクトで、currentscreenchange という名前のイベントを 発火します。

3.4. ScreenDetailed インターフェイス

ScreenDetailed オブジェクトは、画面を表します。

screenDetailed . availLeft

マルチスクリーン原点から利用可能な画面領域の左端までの 距離を返します。

screenDetailed . availTop

マルチスクリーン原点から利用可能な画面領域の上端までの 距離を返します。

screenDetailed . left

マルチスクリーン原点から画面領域の左端までの距離を 返します。

screenDetailed . top

マルチスクリーン原点から画面領域の上端までの距離を 返します。

screenDetailed . isPrimary

この画面が OS によって「プライマリ」画面として指定されているかどうかを返します (そうでない場合は「セカンダリ」画面です)。

screenDetailed . isInternal

この画面が、ノートパソコンのディスプレイのようにデバイスに組み込まれた「内部」パネルであるかどうかを 返します(そうでない場合は、有線モニターのような「外部」画面です)。

screenDetailed . devicePixelRatio

物理ピクセルと論理ピクセルの比率を返します。

screenDetailed . label

ユーザーエージェントおよび OS によって決定される、画面のユーザー向けラベルです。

[Exposed=Window, SecureContext]
interface ScreenDetailed : Screen {
  readonly attribute long availLeft;
  readonly attribute long availTop;
  readonly attribute long left;
  readonly attribute long top;
  readonly attribute boolean isPrimary;
  readonly attribute boolean isInternal;
  readonly attribute float devicePixelRatio;
  readonly attribute DOMString label;
};

availLeft の取得手順は、this画面利用可能な画面 位置の x 座標を返すことです。

availTop の取得手順は、this画面利用可能な画面 位置の y 座標を返すことです。

left の取得手順は、this画面画面位置の x 座標を返すことです。

top の取得手順は、this画面画面位置の y 座標を返すことです。

isPrimary の取得手順は、this画面プライマリ画面である場合は true を返し、それ以外の場合は false を返すことです。

isInternal の取得手順は、this画面内部である場合は true を返し、それ以外の場合は false を返すことです。

devicePixelRatio の取得手順は、this画面デバイスピクセル比を返すことです。

label の取得手順は、this画面ラベルを返すことです。

3.4.1. onchange 属性

onchange 属性は、Screen から継承された onchange 属性です。

ScreenDetailed オブジェクト screenDetailed が表す画面基本的な観測可能プロパティまたは高度な観測可能プロパティのいずれかが変更された場合、 screenDetailed関連する大域オブジェクトで、ウィンドウ配置タスクソースを使用して大域タスクをキューに追加し、screenDetailedchange という名前のイベントを 発火します。

3.5. FullscreenOptions の拡張

fullscreenOptions . screen

要素の全画面表示要求に使用する画面を指定します。

partial dictionary FullscreenOptions {
  ScreenDetailed screen;
};

省略可能な FullscreenOptionsscreen メンバーは、特定の画面に要素を全画面表示するというアプリケーションの選好を示します。ユーザーエージェントは、 常にアプリケーションの選好よりもユーザーの選好を優先できます。既定値 undefined は、 アプリケーションの選好がないことを示します。

3.5.1. Element.requestFullscreen() メソッド定義の変更

Element.requestFullscreen() メソッドの手順は、任意で次の処理を行うよう更新されます。

  1. pendingDocトップレベル閲覧コンテキストアクティブな文書のビューポートを移動およびサイズ変更するときに、 options["screen"] を考慮します。この変更されたメソッド手順の一部として、ビューポートを指定された画面へ移動することがあります。

  2. options["screen"] が、isExtended の値が true である、認識済みの ScreenDetailed オブジェクトを指定している場合、this.[[targetScreenFullscreen]] 内部スロットを現在の高解像度時刻に設定します。

3.6. CSS の拡張

この仕様は、ウィンドウの状態に基づいてスタイルシートを適応できるようにする、新しい CSS メディア機能を定義します。

3.6.1. 「display-state」メディア機能

名前: display-state
対象: @media
値: normal | minimized | maximized | fullscreen
型: 離散

「@media/display-state」メディア機能は、現在の閲覧コンテキストが現在エンドユーザーに提示されているウィンドウの状態を 説明します。子閲覧コンテキストでは、表示状態トップレベル閲覧コンテキストの表示状態と一致しなければなりません。

この機能は主に、アプリケーションコンテキストを実行しているユーザーエージェントに、 ホストオペレーティングシステムがどの表示状態を適用したかを判定するために使用されます。

normal
閲覧コンテキストは、通常表示状態で表示されます。
minimized
閲覧コンテキストは、最小化表示状態で表示されます。
maximized
閲覧コンテキストは、最大化表示状態で表示されます。
fullscreen
閲覧コンテキストは、全画面表示状態で表示されます。

3.6.2. 「resizable」メディア機能

名前: resizable
対象: @media
値: true | false
型: 離散

「@media/resizable」メディア機能は、ウィンドウをユーザーがサイズ変更できるかどうかを説明します。

true
ユーザーはウィンドウの端をドラッグして、ウィンドウのサイズを変更できます。
false
ユーザーはウィンドウの端をドラッグして、ウィンドウのサイズを変更できません。

3.7. Permission API との統合

この仕様は、名前window-management」によって識別される既定の強力な機能を定義します。

[permissions] API は、 ウェブサイトが権限の状態を照会するための統一された方法を提供します。

注: この文書の以前に公開されたバージョンでは、 権限名 "window-placement" を使用していました。ユーザーエージェントは、更新された権限文字列 「window-management」 へ慎重に移行するべきです。#114 を参照してください。

window-management[permissions] レジストリに追加します。

権限が取り消された場合の、 キャッシュされたオブジェクトおよびメソッド手順の動作を定義します。(#80 を参照)

3.8. Permission Policy との統合

この仕様は、isExtendedgetScreenDetails、 およびそれらに依存する機能を使用できるかどうかを制御する、文字列 "window-management" によって識別されるポリシー制御機能を定義します。この機能の既定の許可リスト'self' です。[permissions-policy] およびその実験的 機能の一覧を参照してください。

注: 文書の Permissions Policy は、その文書内のコンテンツが isExtended から意味のある値を取得すること、ScreenDetails にアクセスすること、または特定の画面にコンテンツを配置することを許可されるかどうかを決定します。無効にされている場合、 isExtended は false を返し、getScreenDetails が返す promise は拒否され、特定の画面にコンテンツを配置する要求は現在の画面に制限されます。

適切な時期に window-management提案済み または標準化済み 機能の一覧へ移動します。

4. セキュリティに関する考慮事項

この仕様により、サイトは特定の画面にコンテンツを配置できるようになりますが、これによって限定的な新しいセキュリティリスクが 生じる可能性があります。

  1. サイトが予期しない画面に機密性の高いコンテンツを目立つように表示しようとする可能性があります

  2. サイトが、例えば次のように、あまり目立たない画面に望ましくないコンテンツを密かに表示しようとする可能性があります。

  3. サイトがユーザーの注意を特定の画面に引き付け、そこでの操作シグナルを使用して、あまり注意深く監視されていない 別の画面に欺瞞的なコンテンツを表示することで、フィッシング攻撃のために OS、ブラウザー、または他のサイトを 偽装しようとする可能性があります

  4. サイトが、その他の方法で特定の画面にコンテンツを配置し、欺瞞的、濫用的、または迷惑な方法で動作しようとする 可能性があります

このようなリスクを軽減するため、画面をまたぐ配置機能にはセキュアコンテキストで明示的な権限が必要であり、既定で 第三者によるアクセスを防止する [permissions-policy] の対象となります。

ユーザーエージェントは画面をまたぐ配置要求を検出し、潜在的な濫用からユーザーを保護するために介入できます。例えば、 サイトが別の画面にコンテンツを配置したとき、または画面をまたぐ配置後にウィンドウがユーザーの注意を引いたとき、 ユーザーエージェントは目立つセキュリティ表示を提示できます。さらに、画面をまたぐ配置要求を拒否したり、一部の ユーザーエージェントの既存の動作と同様に、現在の画面に制限したりできます。

その他の注意点は次のとおりです。

セキュリティに関する考慮事項については、次の追加検討を参照してください。

5. プライバシーに関する考慮事項

この仕様は、デバイスに接続された画面に関する新しい情報をサイトに公開します。これにより、限定的な新しいプライバシーリスクが 生じる可能性があります。この追加情報は、特に一般的でない画面構成を持つデバイスのフィンガープリンティング可能な範囲を拡大します。

このようなリスクを軽減するため、新しい情報は一般的な配置のユースケースに必要な最小限に抑えられ、ほとんどのアクセスには セキュアコンテキストで明示的な権限が必要であり、既定で第三者によるアクセスを防止する [permissions-policy] の対象となります。公開される画面の一覧には、 相互運用性の問題を減らし、フィンガープリンティングを軽減するために定義された順序があります。一般にユーザーエージェントは、 サイトが新しい情報を要求したときに、その要求を測定したり、その他の方法で介入したりできます。

Screen.isExtended ブール値は、明示的な権限チェックなしで公開されます。この最小限の 1 ビットの情報は、 権限プロンプトが煩わしくなる重要な機能(例えば、「別の画面に表示」のようなマルチスクリーン UI の入口を表示または非表示に する機能)をサポートし、単一画面のユーザーに適用できない情報や機能について不必要に権限を要求することを回避するためです。 これは概ね、デバイス列挙に関する TAG の設計原則(ウェブプラットフォーム設計 原則 § 9.2 デバイスを選択または列挙する API を公開するときは注意するを参照)に従っています。

多くのユーザーエージェントは、window.screen.availLeft|Top >> 0 となるセカンダリ画面上の ウィンドウに対して、複数の画面が存在することを事実上すでに公開しています。スクリプトによるこのビットへのアクセスは、 検出可能なアクティブフィンガープリンティングシグナルであり、 ユーザーエージェントによって監視およびブロックされる可能性があります。さらに、権限のないウィンドウ配置要求を現在の 画面に制限しないユーザーエージェントでは、攻撃者が別の画面へのプログラムによる配置を試みることができ、その時点で その window.screen に関する情報が公開されます。

新しい Screen.onchange イベントは、一時的フィンガープリンティングを容易にするため、 わずかなリスクをもたらします。しかし、スクリプトはすでに window.screen の変更をポーリングすることで 同じ結果を得られます。このリスクは、非表示の文書が非表示でなくなるまで、その文書に対するイベントのディスパッチを遅延させる ことで、部分的に軽減できる可能性があります。

サイトに与える権限をより小さくする別の API 形式も検討されましたが、ユーザーおよび開発者にとって使い勝手が悪くなります (例えば、ユーザーに画面を選択させる、開発者に宣言的な画面の順位付けを要求するなど)。接続されている任意の画面に、 全画面ではないアプリウィンドウを配置するための代替手段は、あったとしてもほとんどありません。規定された API 形式は、 より完全なマルチスクリーン環境をサポートするための、既存 API の最も自然な拡張であると考えられます。将来の作業には、 サイトが自発的に情報公開を最小限に抑えられるよう、より限定されたマルチスクリーン情報を照会する方法が含まれる可能性があります。

規定された API 設計により、ユーザーエージェントは、ユーザーが指定した画面に関する画面情報および配置機能を制限するなど、 新しいアクセスモデルを使用して画面を選択的に公開できます。

その他の注意点は次のとおりです。

プライバシーに関する考慮事項については、次の追加検討を参照してください。

6. アクセシビリティに関する考慮事項

この仕様により、サイトは特定の画面にコンテンツを配置できるようになりますが、これによって限定的な新しいアクセシビリティリスクが 生じる可能性があります。視覚的な表示、非視覚的なレンダリング、および支援技術がコンテンツ自体に及ぼす影響は、通常、 コンテンツをある画面に配置するか別の画面に配置するかによって大きく左右されるものではありません。それでも、 プログラムによるコンテンツ配置に関する既存のアクセシビリティリスクは、コンテンツを配置できる領域が拡大することによって 悪化する可能性があります。既定の強力な機能の権限モデル、プロンプト方法、および 権限関連 UI に関する既存のアクセシビリティ上の考慮事項は、この仕様の権限にも同様に関係します。

現時点では、この API によって公開される構造化された画面情報(およびそのアクセシビリティ機能)に関して、 文書化されたアクセシビリティ上の考慮事項はありません。

7. 国際化に関する考慮事項

現時点では、文書化された国際化に関する考慮事項はありません。

8. 謝辞

この仕様の作成に協力してくださった Adrienne Walker、 Anssi Kostiainen、 Chris Terefinko、 Domenic Denicola、 Jonathan Garbee、 Kenneth Rohde Christiansen、 L. David Baron、 Lukasz Olejnik、 Marijn Kruisselbrink、 Matt Giuca、 Michael Ketting、 Nadav Sinai、 Peter Linss、 Reilly Grant、 Staphany Park、 Theresa O’Connor、 Thomas Nattestad、 Thomas Steiner、および Victor Costan に深く感謝します。

誰も記載し忘れていないことを 確認してください!

この文書の作成に使用された仕様記述ツール Bikeshed を作成および保守し、仕様記述全般について助言してくださった Tab Atkins, Jr. に特に感謝します。

適合性

文書の 表記規則

適合要件は、説明的な表明と RFC 2119 の用語を組み合わせて表現されます。 この文書の規範的な部分におけるキーワード「MUST」、「MUST NOT」、「REQUIRED」、「SHALL」、「SHALL NOT」、 「SHOULD」、「SHOULD NOT」、「RECOMMENDED」、 「MAY」、および「OPTIONAL」は、 RFC 2119 で説明されているとおりに解釈されます。 ただし、読みやすさのため、 この仕様ではこれらの語をすべて大文字では表記していません。

明示的に非規範的と記された節、例、および注を除き、 この仕様のすべてのテキストは規範的です。[RFC2119]

この仕様の例は、「例えば」という語で導入されるか、 次のように class="example" によって 規範的なテキストから区別されます。

これは参考例の一例です。

参考注記は「注」という語で始まり、 次のように class="note" によって 規範的なテキストから区別されます。

注: これは参考注記です。

適合 アルゴリズム

アルゴリズムの一部として命令形で表現された要件 (「先頭の空白文字をすべて除去する」 または「false を返し、これらの手順を中止する」など)は、 そのアルゴリズムを導入するときに使用されたキーワード (「must」、「should」、「may」など)の意味で解釈されます。

アルゴリズムまたは特定の手順として表現された適合要件は、 最終的な結果が同等である限り、 どのような方法でも実装できます。 特に、この仕様で定義されるアルゴリズムは、 理解しやすいことを意図しており、 高性能であることを意図していません。 実装者には最適化が推奨されます。

索引

この仕様で定義される 用語

参照によって定義される 用語

参考文献

規範的参考文献

[APPMANIFEST]
Marcos Caceres; Daniel Murphy; Christian Liebel. ウェブ アプリケーションマニフェスト。2026 年 8 月 13 日。WD。URL: https://www.w3.org/TR/appmanifest/
[CSS-CONDITIONAL-3]
Chris Lilley; David Baron; Elika Etemad. CSS 条件付き規則モジュール レベル 3。2024 年 8 月 15 日。CRD。URL: https://www.w3.org/TR/css-conditional-3/
[CSS-VALUES-4]
Tab Atkins Jr.; Elika Etemad. CSS 値と単位 モジュール レベル 4。2024 年 3 月 12 日。WD。URL: https://www.w3.org/TR/css-values-4/
[CSSOM-VIEW-1]
Simon Fraser; Emilio Cobos Álvarez. CSSOM View モジュール。2025 年 9 月 16 日。WD。URL: https://www.w3.org/TR/cssom-view-1/
[DESIGN-PRINCIPLES]
Martin Thomson; Jeffrey Yasskin. ウェブプラットフォーム 設計原則。2026 年 2 月 24 日。NOTE。URL: https://www.w3.org/TR/design-principles/
[DOM]
Anne van Kesteren. DOM 標準。現行標準。 URL: https://dom.spec.whatwg.org/
[ECMASCRIPT]
ECMAScript 言語仕様。URL: https://tc39.es/ecma262/multipage/
[FINGERPRINTING-GUIDANCE]
Nick Doty; Tom Ritter. ウェブ仕様における ブラウザーフィンガープリンティングの軽減。2025 年 9 月 25 日。NOTE。URL: https://www.w3.org/TR/fingerprinting-guidance/
[Fullscreen]
Philip Jägenstedt. Fullscreen API 標準。 現行標準。URL: https://fullscreen.spec.whatwg.org/
[HR-TIME-3]
Yoav Weiss. 高解像度時刻。2026 年 3 月 24 日。 WD。URL: https://www.w3.org/TR/hr-time-3/
[HTML]
Anne van Kesteren; et al. HTML 標準。 現行標準。URL: https://html.spec.whatwg.org/multipage/
[INFRA]
Anne van Kesteren; Domenic Denicola. Infra 標準。現行標準。URL: https://infra.spec.whatwg.org/
[PERMISSIONS]
Marcos Caceres; Mike Taylor. Permissions。 2025 年 10 月 6 日。WD。URL: https://www.w3.org/TR/permissions/
[PERMISSIONS-POLICY]
Ian Clelland. Permissions Policy。 2026 年 6 月 18 日。WD。URL: https://www.w3.org/TR/permissions-policy-1/
[RFC2119]
S. Bradner. 要件レベルを示すために RFC で 使用するキーワード。1997 年 3 月。現行の最良慣行。URL: https://datatracker.ietf.org/doc/html/rfc2119
[WEBIDL]
Edgar Chen; Timothy Gu. Web IDL 標準。現行標準。 URL: https://webidl.spec.whatwg.org/

非規範的参考文献

[SCREEN-ORIENTATION]
Marcos Caceres; Léonie Watson. 画面の 向き. 2026年8月6日. 作業草案. URL: https://www.w3.org/TR/screen-orientation/

プロパティ索引

定義されたプロパティはありません。

@media 記述子

名前 初期値
display-state normal | minimized | maximized | fullscreen 離散
resizable true | false 離散

IDL 索引

partial interface Screen /* : EventTarget */ {
  [SecureContext]
  readonly attribute boolean isExtended;

  [SecureContext]
  attribute EventHandler onchange;
};

partial interface Window {
  [SecureContext]
  Promise<ScreenDetails> getScreenDetails();

  [SecureContext]
  Promise<undefined> minimize();

  [SecureContext]
  Promise<undefined> maximize();

  [SecureContext]
  Promise<undefined> restore();

  [SecureContext]
  Promise<undefined> setResizable(boolean resizable);
};

[Exposed=Window, SecureContext]
interface ScreenDetails : EventTarget {
  readonly attribute FrozenArray<ScreenDetailed> screens;
  readonly attribute ScreenDetailed currentScreen;

  attribute EventHandler onscreenschange;
  attribute EventHandler oncurrentscreenchange;
};

[Exposed=Window, SecureContext]
interface ScreenDetailed : Screen {
  readonly attribute long availLeft;
  readonly attribute long availTop;
  readonly attribute long left;
  readonly attribute long top;
  readonly attribute boolean isPrimary;
  readonly attribute boolean isInternal;
  readonly attribute float devicePixelRatio;
  readonly attribute DOMString label;
};

partial dictionary FullscreenOptions {
  ScreenDetailed screen;
};

課題索引

デバイスピクセル比には ページズームを含めるべきでしょうか?
CSSOM View § 4.3 Screen インターフェイスにおいて、ScreenEventTarget から派生させます。
window-management[permissions] レジストリに追加します。
権限が取り消された場合の、キャッシュされたオブジェクトおよびメソッド手順の動作を定義します。(#80 を参照)
適切な時期に window-management提案済み または標準化済み 機能の一覧へ移動します。
誰も記載し忘れていないことを確認してください!