-
Notifications
You must be signed in to change notification settings - Fork 4
/
266.txt
144 lines (109 loc) · 9.05 KB
/
266.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
* 仕様書
[REFS[
- [12] '''[CITE@en-US-x-hixie[HTML Standard]] ([TIME[2014-04-03 03:44:44 +09:00]] 版) <http://www.whatwg.org/specs/web-apps/current-work/#print-media>'''
- [15] '''[CITE@en-US-x-hixie[HTML Standard]] ([TIME[2014-04-03 03:44:44 +09:00]] 版) <http://www.whatwg.org/specs/web-apps/current-work/#printing>'''
- [17] [CITE@en-US-x-hixie[HTML Standard]] ([TIME[2014-04-03 03:44:44 +09:00]] 版) <http://www.whatwg.org/specs/web-apps/current-work/#window>
- [31] [CITE@en-US-x-hixie[HTML Standard]] ([TIME[2014-04-03 03:44:44 +09:00]] 版) <http://www.whatwg.org/specs/web-apps/current-work/#event-handlers-on-elements,-document-objects,-and-window-objects>
- [34] [CITE@en-US-x-hixie[HTML Standard]] ([TIME[2014-04-03 03:44:44 +09:00]] 版) <http://www.whatwg.org/specs/web-apps/current-work/#the-end>
]REFS]
* 物理形
[13] [[利用者エージェント]]は[[利用者]]に対して[DFN[[RUBYB[[[物理形を得る]]]@en[obtain a physical form]]]]
(または物理形の[RUBYB[表現]@en[representation]]を得る) 機会を要求できるようにすることが[[期待されています]] [SRC[>>12]]。
ここで「物理形を得る」とは例えば[[印刷]]のことを、
「物理形の表現を得る」とは例えば [[PDF]] への変換のことをいいます
[SRC[>>15]]。
[19] [[利用者]]が[[物理形を得る]] (または表現を得る) 機会を要求した時には、 [[printing steps]]
を走らせる[['''べきです''']] [SRC[>>15]]。
;; [30] 「物理形を得る」が >>19 と >>26 で異なる意味で使われているように見えます。
[14] 実際に[[物理形を得る]] (または表現を得る) 際には、当該 [CODE(DOMi)@en[[[Document]]]]
の[[印刷]][[媒体]]用の新しい[[レンダリング]]を作成することが[[期待されています]] [SRC[>>12]]。
* [CODE(JS)@en[window.print]] (DOM)
[16] [CODE(DOMi)@en[[[Window]]]] [[インターフェイス]]の [DFN[[CODE(DOMm)@en[[[print]]]]]]
は、[[引数]]なし、[[返り値]]なしの[[メソッド]]です [SRC[>>15]]。
[18] [CODE(DOMi)@en[[[Document]]]] が [[ready for post-load tasks]] 状態なら、
同期的に [[printing steps]] を実行します。そうでないなら、 [DFN[[[print when loaded]]]]
フラグを設定します。 [SRC[>>15]]
[33] [[print when loaded]] フラグが設定されると、後に [[stop parsing]] 手順が [[HTML構文解析器]]または
[[XML構文解析器]]によって実行される際に、 [[printing steps]] が呼び出されます [SRC[>>34]]。
;; [37] つまり、 [CODE(DOMe)@en[[[load]]]] ([[stops parsing]]) まで[[printing steps]]の実行は遅延されます。
[44] [[Chrome]] は [CODE[execCommand]] の[[命令]] [DFN[[CODE[print]]]]
でも同じように動作します。
[TIME[2016-12-07T01:01:05.300Z]]
* printing steps
[20] [DFN[[[printing steps]]]] とは、次の手順です [SRC[>>15]]。
[FIG(steps)[
= [21] [[利用者]]にメッセージを表示するか、ここで終わるか、あるいはその両方を実行して構いません。
=- [22] 例えば[[キオスクモード]]では黙って無視して構いません。
=- [23] 例えば[[モバイル機器]]の[[ブラウザー]]で印刷機がないときはメッセージを出してから「[[PDF]] で保存」
オプションを提示しても構いません。
= [40] [[文脈オブジェクト]]の[F[文書]]の[F[活性砂箱化フラグ集合]]の
[F[sandboxed modals flag]] が設定されていれば、
== [43] ここで停止します。
= [24] 印刷される[[文書]]とその[[入れ子閲覧文脈]]の [CODE(DOMi)@en[[[Window]]]] で
[DFN[[CODE(DOMe)@en[[[beforeprint]]]]]] [[単純イベントを発火]]します。
= [26] [[物理形を得る]] (または表現を得る) 機会を提供する[['''べきです''']]。
=- [27] [[利用者]]がこれを受け付けるか断るかするまで待って[['''構いません''']]。待つ場合は [[pause]] しなければ[['''なりません''']]。
=- [28] 待たない場合であっても、この時点での[[文書]]の状態を使わなければ[['''なりません''']]。
= [29] 印刷される[[文書]]とその[[入れ子閲覧文脈]]の [CODE(DOMi)@en[[[Window]]]] で
[DFN[[CODE(DOMe)@en[[[afterprint]]]]]] [[単純イベントを発火]]します。
]FIG]
[39] [[物理形を得る]]機会を提供するとは、具体的には[[プラットフォーム]]または[[アプリケーション]]の[[印刷]]オプションを表す[[モーダルダイアログ]]を表示することを指しています。
[[利用者]]はその[[ダイアログ]]上での操作により、実際に[[印刷]]を行うことを指示したり、
[[ダイアログ]]を閉じて処理を継続することを指示したりできます。
[45] [[プラットフォーム]]が提供する[[印刷]]ダイアログを表示する
[[Webブラウザー]]が多いですが、 [[Chrome]] は独自のダイアログを持っています。
[[プラットフォーム]]に登録された[[プリンター]]の他に、 [[PDF]] として保存するオプションが用意されています。
[TIME[2017-02-22T04:07:04.00Z]]
* [CODE(DOMa)@en[onbeforeprint]] 属性、 [CODE(DOMa)@en[onafterprint]] 属性
[32] [CODE(DOMi)@en[[[Window]]]] [[オブジェクト]]、 [CODE(HTMLe)@en[[[body]]]] [[要素]]、
[CODE(HTMLe)@en[[[frameset]]]] [[要素]]の [DFN[[CODE(DOMa)@en[[[onbeforeprint]]]]]] [[属性]]、
[DFN[[CODE(DOMa)@en[[[onafterprint]]]]]] [[属性]]は、それぞれ [CODE(DOMi)@en[[[Window]]]]
[[オブジェクト]]の[[イベント型]]
[CODE(DOMe)@en[[[beforeprint]]]]、[CODE(DOMe)@en[[[afterprint]]]] の[[イベントハンドラー]]です [SRC[>>31]]。
* 媒体型 [CODE(CSS)@en[print]]
[3] [[媒体型]] [DFN[[CODE(CSS)@en[[[print]]]]]] は、[[印刷]]用の表示モードを表します。
* 印刷プレビュー
[35] 多くの [[Webブラウザー]]は、[[印刷]]機能と[[印刷プレビュー]]モードを実装しています。
[36] [[印刷プレビュー]]モードでは、実際に[[印刷]]する場合と同じ形で画面上に[[レンダリング]]されます。
* 歴史
[1]
[CITE[Printing the Web: Solutions and Techniques | Smashing Magazine]] ([CODE[2007-02-24 00:44:42 +09:00]] 版) <http://www.smashingmagazine.com/2007/02/21/printing-the-web-solutions-and-techniques/>
([[名無しさん]] [WEAK[2007-02-23 16:09:40 +00:00]])
[2]
[CITE[TRANS - 印刷用CSSをもっとよくするための4つのTips。]] ([CODE[2007-04-22 03:28:49 +09:00]] 版) <http://d.hatena.ne.jp/aratako0/20070421/p1>
([[名無しさん]] [WEAK[2007-04-23 01:23:19 +00:00]])
[4]
[CITE@de[W3C Print Symposium 2006]] ([CODE[2006-10-23 20:51:46 +09:00]] 版) <http://www.w3c.de/Events/2006/PrintSymposium_en.html>
[5] [CITE[CSS Print Profile]]
( ([TIME[2013-03-14 20:50:03 +09:00]] 版))
<http://www.w3.org/TR/2013/NOTE-css-print-20130314/#section-mediatypes>
[6] [CITE@en[The New Publishing - A W3C Workshop on the Open Web Platform and the Traditional Print Publishing Industry]]
( ([TIME[2013-10-04 08:21:37 +09:00]] 版))
<http://www.w3.org/2012/12/global-publisher/report.html>
[7] [CITE['''['''whatwg''']''' window.print() when printing is not supported]]
([TIME[2010-03-23 11:24:14 +09:00]] 版)
<http://lists.whatwg.org/pipermail/whatwg-whatwg.org/2010-March/025597.html>
[8] [CODE(HTMLa)@en[[[onload]]]] で [CODE(JS)@en[[[window]].[[print]]()]]
する頁がありました。うざいですね。
[CODE(JS)@en[[[window]].[[open]]()]]
と同じで制限するべきではないでしょうか。
([[名無しさん]] [WEAK[2007-07-01 12:42:56 +00:00]])
[REFS[
- [9] [CITE[Bug 43658 – Calling window.print() before the page is loaded results in a blank printed page]]
( ([TIME[2011-01-22 02:20:14 +09:00]] 版))
<https://bugs.webkit.org/show_bug.cgi?id=43658>
- [10] [CITE[''''''[''''''whatwg'''''']'''''' Browsers delay window.print() action until page load finishes]]
( ([TIME[2011-08-03 08:57:12 +09:00]] 版))
<http://lists.whatwg.org/htdig.cgi/whatwg-whatwg.org/2011-August/032775.html>
- [11] [CITE@ja[はてなブックマーク - コメントなし - 2009年12月24日]]
([TIME[2010-01-01 12:19:17 +09:00]] 版)
<http://b.hatena.ne.jp/edvakf/20091224#bookmark-18107939>
- [38] [CITE@en[Block modal dialogs by default in sandboxed documents · whatwg/html@bbccfc9]] ([TIME[2015-09-10 00:20:23 +09:00]] 版) <https://github.com/whatwg/html/commit/bbccfc976754def0c187ac8ce5891d2fb20dfc15>
]REFS]
[25] [CITE@en[Remove the storage mutex due to lack of implementation · whatwg/html@1b918cf]] ([TIME[2015-12-16 14:38:10 +09:00]] 版) <https://github.com/whatwg/html/commit/1b918cf72fcbba011f83b92ab5d1f483fb1cafa3>
[41] [CITE@en[Issue 173 - chromium - Missing a Print Preview option - Monorail]]
( ([TIME[2016-06-18 01:20:17 +09:00]]))
<https://bugs.chromium.org/p/chromium/issues/detail?id=173>
[42] [CITE@en[Use the Window's associated Document for allow-modals sandbox checks]]
([[domenic]]著, [TIME[2016-07-14 06:37:56 +09:00]])
<https://github.com/whatwg/html/commit/29ebd5b6e8c4ba4006115a784c5c6c87dc151489>