* 仕様書

[REFS[
- [8] [CITE@en[CSSOM View Module]] ([TIME[2016-08-06 08:18:46 +09:00]]) <https://drafts.csswg.org/cssom-view/#the-screen-interface>
]REFS]

* 意味

[14] [CODE(DOMi)@en[Screen]] [[オブジェクト]]は、
[DFN[[RUBYB[[[出力装置]]]@en[output device]]]]を表します [SRC[>>8]]。

[17] [[出力装置]]という語は [[CSSOM View]] [[仕様書]]でも明確な定義は与えられていませんが、
[[窓]]が[[レンダリング]]されるべき[[画面]]のことを指しています。通常は物理的な[[ディスプレイ]]
(単独の[[装置]]のこともあれば、[[ノートPC]]や[[スマートフォン]]のように[[計算機]]本体と一体化していることもあります。)
ですが、[[仮想化]]されて物理的に存在しない場合もあります。

;; [19] [[CSSOM View]] は「the screen of the output device」という語を[[起源][座標起源]]に触れる時だけ使っています。それ以外は単に
「the output device」と言っています。

[18] [[マルチディスプレイ]]環境での扱いを [[CSSOM View]] [[仕様書]]は規定していませんが、
[[窓]]が所在する (と[[プラットフォーム]]依存の方法で決定される) [[画面]]が[[自動的][live]]に選択されるようです。

* 状態

[22] 次の状態を持ちます。
[FIG(list members)[
: [F[幅]] :
: [F[高さ]] :
: [F[[[装置画素]]の縦サイズ]] : [CODE(DOMa)@en[devicePixelRatio]] で参照されます。
: [F[[[ロック画面]]表示中]] :
[[プラットフォーム]]の[[ロック画面]]の表示中かどうかを表します。
[[文書]]の[F[可視性状態]]に影響します。
値が変化した時 [CODE[visibilitychange]] が[[発火]]されるかもしれません。
]FIG]

[23] [[画面]]には、[[座標系]]が定義されます。

[26] [[窓][窓 (Web)]]は、[[画面]]内に存在して、[[画面]]の[[座標系]]上の位置や、
[F[可視性状態]]を持ちます。

-*-*-

[27] [[プラットフォーム]]によっては、一定時間[[利用者]]の操作が無いと、
[[スクリーンセーバー]]、[[ロック画面]]、[[画面]]の[[省電力モード]]といった[[窓]]が表示されない状態に移行することがあります。
[[動画]]再生中など、それを無効化するべき場合もあります。

* メンバー

[11] 
[FIG(short list)[
- [CODE(DOMa)@en[availHeight]]
- [CODE(DOMa)@en[availWidth]]
- [CODE(DOMa)@en[availLeft]]
- [CODE(DOMa)@en[availTop]]
- [CODE(DOMa)@en[height][screen.height]]
- [CODE(DOMa)@en[width][screen.width]]
- [CODE(DOMa)@en[left][screen.left]]
- [CODE(DOMa)@en[top][screen.top]]
- [CODE(DOMa)@en[bufferDepth]]
- [CODE(DOMa)@en[deviceXDPI]]
- [CODE(DOMa)@en[deviceYDPI]]
- [CODE(DOMa)@en[fontSmoothingEnabled]]
- [CODE(DOMa)@en[logicalXDPI]]
- [CODE(DOMa)@en[logicalYDPI]]
- [CODE(DOMa)@en[systemXDPI]]
- [CODE(DOMa)@en[systemYDPI]]
- [CODE(DOMa)@en[updateInterval]]
- [CODE(DOMa)@en[colorDepth]]
- [CODE(DOMa)@en[pixelDepth]]
]FIG]

[16] [CODE(DOMi)@en[Screen]] [[インターフェイス]]の [DFN[[CODE(DOMa)@en[colorDepth]]]]
[[属性]]と [DFN[[CODE(DOMa)@en[pixelDepth]]]] [[属性]]は、 [N[24]] を返さなければ[MUST[なりません]]
[SRC[>>8]]。

* 幅と高さ

[12] [[出力装置]]は、[F[[RUBYB[[[幅]]]@en[width]]]]と[F[[RUBYB[[[高さ]]]@en[height]]]]を持ちます。

[13] [CODE(DOMi)@en[Screen]] [[インターフェイス]]の
[CODE(DOMa)@en[width][screen.width]] [[属性]]および
[DFN[[CODE(DOMa)@en[availWidth]]]] [[属性]]は、
[[文脈オブジェクト]]の[F[幅]]を [[CSS画素]]単位の [CODE(IDL)@en[long]]
で返さなければ[MUST[なりません]] [SRC[>>8]]。

[15] [CODE(DOMi)@en[Screen]] [[インターフェイス]]の
[CODE(DOMa)@en[height][screen.height]] [[属性]]および
[DFN[[CODE(DOMa)@en[availHeight]]]] [[属性]]は、
[[文脈オブジェクト]]の[F[高さ]]を [[CSS画素]]単位の [CODE(IDL)@en[long]]
で返さなければ[MUST[なりません]] [SRC[>>8]]。

[20] [[CSSOM View]] [[仕様書]]は、 [CODE[avail[VAR[*]]]] について、
[[出力装置]]の「rendering surface」の[[幅]]や[[高さ]]と規定しています [SRC[>>8]]。
その「rendering surface」が具体的に何であるかは不明です。
[[Windows]] の [[Firefox]] や [[IE]] は、[[タスクバー]]を除いた大きさを返すようです。
[[CSSOM View]] に含まれていない [CODE[availTop]] および [CODE[availLeft]]
と併せて、[[デスクトップ]]環境の固定の表示要素を除いた実質的な表示領域が元々の意図だったようです。
[[Chrome]] は [CODE[avail[VAR[*]]]] でも全体の[F[幅]]と[F[高さ]]を返すので、
[[Web互換性]]のためにはこの差は考慮しなくて構わないようです。

[21] これらの情報は、 [[fingerprinting vector]] です。

* 演算

[25] [[画面写真]]

* 関連

[SEE[ [[多画面]] ]]

* 歴史

[1] 次の[[属性]]は [[JavaScript 1.2]] で導入されました。
[FIG(short list)[
- [CODE(DOMa)@en[[[availHeight]]]]
- [CODE(DOMa)@en[[[availLeft]]]]
- [CODE(DOMa)@en[[[availTop]]]]
- [CODE(DOMa)@en[[[availWidth]]]]
- [CODE(DOMa)@en[[[colorDepth]]]]
- [CODE(DOMa)@en[[[height]]]]
- [CODE(DOMa)@en[[[pixelDepth]]]]
- [CODE(DOMa)@en[[[width]]]]
]FIG]

[2]
[CITE@en-us[screen - MDC]] ([TIME[2009-01-02 17:57:01 +09:00]] 版) <https://developer.mozilla.org/Ja/DOM/Window.screen>

[9] [CODE(DOMa)@en[[[availTop]]]], [CODE(DOMa)@en[[[availLeft]]]]
は [[Gecko]] と [[WebKit]] にはありますが、 [[WinIE7]]、[[Opera 9.52]] にはありません。

[73] [CODE(JS)@en[[[screen.top]]]] と [CODE(JS)@en[[[screen.left]]]]
は [[Gecko]] にはありますが、 [[WebKit]]、[[Opera 9.52]]、
[[WinIE7]] にはありません。

[10] [CITE@en-us[window.screen.availTop - MDC]]
([TIME[2009-09-13 18:18:42 +09:00]] 版)
<https://developer.mozilla.org/en/DOM/window.screen.availTop>

[3] [[Firefox]] と [[Safari]] は[[マルチディスプレイ]]に対応しているみたいです ([[Windows Vista]] で確認)。
width、height 系だけでなく、top、left 系もディスプレイにより変化します。

当該[[ブラウザー窓]]の中央あたりが属する[[ディスプレイ]]についての情報を返しているっぽいです。
[[タスクバー]]の有無によって avail もちゃんと適当な値になります。

;; 両ブラウザーとも一致するのは偶然でしょうか、それとも [[OS]] の [[API]] の仕様でしょうか。

[[Opera]] と [[WinIE]] は対応していません。


[4] [CITE[''''''[''''''whatwg'''''']'''''' Processing the zoom level - MS extensions to window.screen]]
( ([TIME[2010-11-20 10:33:57 +09:00]] 版))
<http://lists.whatwg.org/htdig.cgi/whatwg-whatwg.org/2010-November/029073.html>

[5] [CITE@en[The Screen Orientation API]]
( ([TIME[2012-05-22 02:46:50 +09:00]] 版))
<http://www.w3.org/TR/2012/WD-screen-orientation-20120522/>

[6] [CITE@en[The Screen Orientation API]]
( ([TIME[2012-12-04 06:59:29 +09:00]] 版))
<http://www.w3.org/TR/2012/WD-screen-orientation-20121206/>

[7] [CITE@en[The Screen Orientation API]]
( ([TIME[2014-02-18 23:01:34 +09:00]] 版))
<http://www.w3.org/TR/2014/WD-screen-orientation-20140220/>

[28] [CITE@en['''['''cssom-view''']''' Make window.open's features use Web-exposed screen area]]
([[zcorpan]]著, [TIME[2017-03-30 17:37:38 +09:00]])
<https://github.com/w3c/csswg-drafts/commit/80c0561f714b96ae696d17f46774b26c1d251e90>