-
Notifications
You must be signed in to change notification settings - Fork 4
/
632.txt
1019 lines (787 loc) · 55.1 KB
/
632.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
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
* 仕様書
[REFS[
- [155] [CITE@en-GB-x-hixie[HTML Standard]] ([TIME[2015-05-06 10:42:35 +09:00]] 版) <https://html.spec.whatwg.org/#attr-fs-target>
- [165] [CITE@en-GB-x-hixie[HTML Standard]] ([TIME[2015-05-06 10:42:35 +09:00]] 版) <https://html.spec.whatwg.org/#concept-form-submit>
- [130] [CITE@en-GB-x-hixie[HTML Standard]] ([TIME[2015-05-06 10:42:35 +09:00]] 版) <https://html.spec.whatwg.org/#following-hyperlinks-2>
- [231] [CITE@en-GB-x-hixie[HTML Standard]] ([TIME[2015-05-06 10:42:35 +09:00]] 版) <https://html.spec.whatwg.org/#dom-open>
- [243] [CITE@en[CSSOM View Module]] ([TIME[2015-05-06 18:05:35 +09:00]] 版) <http://dev.w3.org/csswg/cssom-view/#the-features-argument-to-the-open()-method>
- [20] [CITE@en-GB-x-hixie[HTML Standard]] ([TIME[2015-05-06 10:42:35 +09:00]] 版) <https://html.spec.whatwg.org/#the-rules-for-choosing-a-browsing-context-given-a-browsing-context-name>
- [199] [CITE@en-GB-x-hixie[HTML Standard]] ([TIME[2015-05-06 10:42:35 +09:00]] 版) <https://html.spec.whatwg.org/#the-sessionstorage-attribute>
]REFS]
* [CODE(HTMLa)@en[target]] 属性 (HTML)
[4] [[HTML]] の
[DFN[[CODE(HTMLa)[target]] 属性]]は、
文書を開く[[フレーム]]の名前を指定します。
[16]
[CODE(HTMLe)@en[[QN[[[a]]] [http://www.w3.org/1999/xhtml]]]]、
[CODE(HTMLe)@en[[QN[[[area]]] [http://www.w3.org/1999/xhtml]]]]、
[CODE(HTMLe)@en[[QN[[[base]]] [http://www.w3.org/1999/xhtml]]]]、
[CODE(HTMLe)@en[[QN[[[button]]] [http://www.w3.org/1999/xhtml]]]]
([CODE(HTML)@en[[[submit]]]])、
[CODE(HTMLe)@en[[QN[[[form]]] [http://www.w3.org/1999/xhtml]]]]、
[CODE(HTMLe)@en[[QN[[[input]]] [http://www.w3.org/1999/xhtml]]]]
([CODE(HTMLe)@en[[[image]]]]、[CODE(HTML)@en[[[submit]]]])、
[CODE(HTMLe)@en[[QN[[[link]]] [http://www.w3.org/1999/xhtml]]]]
:[[属性名]]:[CODE(HTMLa)@en[[[target]]]]
([Q@en[target]] ([Q[対象]]) より)
:[[属性値]]:[CODE(SGML)@en[%[[FrameTarget]];]] (>>6)
:[[既定値]]:(>>7)
[5] 仕様書:
- [[HTML 4]]
-- 16.3 Specifying target frame information
<IW:HTML4:"present/frames.html#target-info">
- [[Web Forms 2.0]]
-- [CSECTION@en[2.17. Extensions to the submit buttons]]
<IW:WF2:"#extensions3">
** 代替
[10] この属性は'''非推奨'''です [SRC[HTML 4]]。
代わりに、[[スタイル・シート]]で指定できます。
[11] [[CSS3]] では、 [SAMP(CSS)[target]] 特性を使って指定できます。
* 属性値
[156] [CODE(HTMLe)@en[[[form]]]] [[要素]]の [CODE(HTMLa)@en[[[target]]]]
[[内容属性]]や[[フォーム制御子]]の [CODE(HTMLa)@en[[[formtarget]]]] [[内容属性]]の値は、
[[妥当な閲覧文脈名またはキーワード]]でなければ[['''なりません''']] [SRC[>>155]]。
@@
[6] この属性の値は [CODE(SGML)[%[[FrameTarget]]]] です。
大文字・小文字は区別しません [SRC[HTML 4 16.3]]。
[[SGML]] 的には [CODE(SGML)[[[CDATA]]]] です。
[7] この属性は省略可能です。
[[#comment]]
** UA による利用
[12] リンクを辿る時に、リンク先資源を開くべきフレームは、
次のように決定するべきです。 [SRC[HTML 4 16.3.1]]
= まず、 [CODE(HTMLa)[target]] 属性を調べます。
指定されていれば、そのフレームで開きます。
= 自分に [CODE(HTMLa)[target]] 属性が無ければ、
[CODE(HTMLe)[base]] 要素の [CODE(HTMLa)[target]]
属性を調べます。指定されていれば、そのフレームで開きます。
= 自分にも [CODE(HTMLe)[base]] 要素にも [CODE(HTMLa)[target]]
属性がなければ、自分と同じフレームで開きます。
- なお、指定された名前のフレームがなければ、
新しい窓とフレームを作り、そこで開きます。
そのフレームの名前は指定された名前とします。
- UA は、利用者が [CODE(HTMLa)[target]] を上書きする仕組みを用意しても構いません。
[[#comment]]
** 他との関係
[8] この属性に指定するフレームの名前は、 (予約名以外は)
[CODE(HTMLe)[[[frame]]]] 要素や [CODE(HTMLe)[[[iframe]]]] 要素の
[CODE(HTMLa)[[[name]]]] 属性で定義します。
[[#comment]]
** 安全性
[14] これまでの実装の中には、 [CODE(HTMLa)[target]]
属性で指定されたフレーム名に素直に従い、
たとえ他の文書・他の鯖の文書であっても該当する名前のフレームがあればそこにリンク先文書を開くものがありました。
このような実装方法は、閲覧者を不可解に思わせるだけでなく、
悪意を持つ人が他のウェブ・サイトのフレームに、
あたかもその一部であるかのように自分の文書を含めることが可能であり、
問題があると現在では考えられています。 (多くのブラウザはフレーム内の文書の
URI を常時表示してはいませんから、普通の閲覧者は気付きにくいのです。)
[15] フレーム内の文書から他者の資源にリンクする際に、
[CODE(HTMLa)[target]] を使って、あるいは使わないで、
自分のフレームの中にその資源を表示させるのは良くないことだと考える人もいます。
特に他者の資源であると明記しない場合には >>14 と同じような問題となり得ますし、
意図的に他者の資源を自分のものと見せかけると法的な責任を問われる虞もあります。
* 閲覧文脈の選択
[144] 次の場面では、 [[navigate]] のための[DFN[[[閲覧文脈]]の選択]]が行われます。
[FIG(list)[
- [131] [[ハイパーリンクをたどる]]処理 [SRC[>>130]]
-- [CODE(HTMLe)@en[[[a]]]] [[要素]]、[CODE(HTMLe)@en[[[area]]]] [[要素]]
- [166] [[フォームの提出]] [SRC[>>165]]
- [172] [CODE(JS)@en[[[window.open]]]] (やそれに相当する [CODE(JS)@en[[[document.open]]]])
]FIG]
;; [188] [[プラグイン]]からの [[navigate]] の指示を行う [[API]]
が提供されている場合、それも同様の選択を行うかもしれません。
@@ SVG、[[MathML]]
** 入出力
[149] これらの処理では、[[著者]]の指定、[[利用者]]の個別の指定、
[[利用者]]の事前の設定や[[利用者エージェント]]の実装方針と現在の[[利用者エージェント]]の状態に基づき、
[[navigate]] が行われるべき適当な[[閲覧文脈]]を決定します。
[150] その結果、[[閲覧文脈]]を1つ選択するか、どの[[閲覧文脈]]も選択しないかのどちらかに決まります。
[[閲覧文脈]]は、既存のものかもしれませんし、新たに作成するものかもしれません。
また付随して [[navigate]] の[[引数]]の
[FIG(list)[
- [VAR[[[置換有効]]]]フラグ
- [VAR[[[利用者]]が[[閲覧文脈]]を明示した]]フラグ
]FIG]
... を設定することがあります。
;; [208] [[閲覧文脈の選択]]で[VAR[[[置換有効]]]]フラグが[[真]]に設定されるのは、
新しい[[閲覧文脈]]が作られた場合です。
[[仕様書]]では、
[[ハイパーリンクをたどる]]の定義ではそれを使って分岐しています (が不完全です (>>173))。
[[フォームの提出]]や [CODE(JS)@en[document.open]] では新しい[[閲覧文脈]]が開かれた場合、
というような分岐になっていて、一貫していません。
[196] 判断の起点となる「現在の[[閲覧文脈]]」とは、
[CODE(JS)@en[[[window.open]]]] (相当) では[[入口設定群オブジェクト]]の[[有責閲覧文脈]]
[SRC[>>231]]、それ以外では[[要素]]の[[閲覧文脈]]です。
*** 著者の指示
[197] [[著者]]は、 [CODE(HTMLa)@en[[[target]]]] [[属性]]、
[CODE(HTMLa)@en[[[formtarget]]]] [[属性]]、
[CODE(JS)@en[[[window.open]]]] [[メソッド]] (相当)
の第2引数によってどの[[閲覧文脈]]を選択するべきかを記述できます。
;; [198] 歴史的には、 [[HTTP]] [CODE(HTTP)@en[[[Window-Target:]]]]
[[ヘッダー]]も存在していました。
[121] [[砂箱化]][DEL[や [CODE(HTMLa)@en[[[seamless]]]]]] であるか否かも影響を与えます。
[205] [[ハイパーリンク]]の場合、[DEL[[[リンク型]] [CODE(HTML)@en[[[sidebar]]]] が指定されているかどうかや、]]
[[リンク型]] [CODE(HTML)@en[noreferrer]] や [CODE[noopener]] が指定されているかどうか
([VAR[noopener]]) も、
挙動に影響を与えます。
[206] [CODE(JS)@en[[[window.open]]]] (相当) の場合、
その第3引数を[[字句化][featuresの字句化]]して得られる[VAR[[[字句化済機能群]]]]が新たに開かれる[[閲覧文脈]]の表示方法に影響を与えます。
*** 利用者の指示
[23] [[利用者]]が[[利用者エージェント]]にどのように指示したり、
[[設定][Webブラウザー利用者の設定]]したりする (できる)
のかは、[[利用者インターフェイス]]や[[プラットフォームの慣習]]に属する領域なので、
仕様書では明確には規定されていません。
[125] 一般的には、個別の [[navigate]] の指示では次のような選択肢が[[利用者]]に提示されます。
[FIG(list)[
- [152] 特に方法を指定しない
- [153] 現在の[[閲覧文脈]]を選択する
- [185] 他の[[閲覧文脈]]を選択する
- [164] 新しい[[閲覧文脈]]を選択する
-- [170] 新しい[[窓]]を開く
-- [183] 新しい[[タブ]]を開く
]FIG]
;; [184] 通常の[[クリック]] (相当) では方法を指定しなかったものとみなし、
それ以外は[[文脈メニュー]]として表示可能としたり、 [KBD[[[Ctrl]]]]
や [KBD[[[Shift]]]] などの[[修飾キー]]との併用で適用したりするのが普通です。
[[リンク]]等を他の[[閲覧文脈]]に [[DnD]] することで、その[[閲覧文脈]]を選択できるのも一般的です。
;; [186] 異なる動作モード ([[private browsing]] や[[利用者プロファイル]]など)
で開く選択肢を提供する [[Webブラウザー]]もあります。
[[閲覧文脈]]同士が相互にアクセスできない、異なる[[利用者エージェント]]と考えるべきものですから
([[private browsing]] 参照)、本項の[[閲覧文脈]]の選択や [[navigate]]
とも異なる処理と考えるべきでしょう。
;; [240] こうした指示の手段は、通常の[[ハイパーリンク]]だけでなく、
[[フォームの提出]]でも提供されるかもしれません。
[CODE(JS)@en[[[window.open]]]] (相当) の実行時にも提供できます [SRC[>>231]]。
[EG[
[234] 例えば [KBD[[[Ctrl]]]] + [[クリック]]で新しい[[タブ]]で[[リンク]]を開く[[利用者エージェント]]は、
[CODE[[[onclick]]]] 時に [KBD[[[Ctrl]]]] が押されていれば、
そこから呼び出された [CODE(JS)@en[[[window.open]]]] において新しい[[タブ]]の[[閲覧文脈]]が指示されたとみなすことができます [SRC[>>231]]。
]EG]
;; [187] [[スクリプト]]からの [CODE(JS)@en[[[window.open]]]] や[[ハイパーリンク]]の
[CODE(DOMm)@en[[[click]]]] など、[[修飾キー]]による指示は適用できても[[メニュー]]からの選択は原理的に行えない場合もあります。
[190] [[ポップアップ]] ([[スクリプト]]による新しい[[最上位閲覧文脈]]を開く操作)
は、濫用された歴史から、厳しく制限されるのが普通になっています。
[[スクリプト]]によらず[[著者]]の指定に従い[[利用者]]の操作を経て新たな[[最上位閲覧文脈]]を開くものも、
必要以上に使われている (と感じる[[利用者]]が少なくない) ため、
[[Webブラウザー]]や[[ブラウザー拡張]]が無効化する機能を提供する場合があります。
[118] [[ポップアップ]]を有効にするか、無効にするか設定できるのが一般的です。
既定の状態では有効となるのが普通です。
[SEE[ [[ポップアップ抑制]] ]]
;; この[[設定][Webブラウザー利用者の設定]]は、 [[allowed to show a popup]] な場合に適用されるものです。
つまり[[利用者]]の動作があった上での[[ポップアップ]]に関するものです。
[[allowed to show a popup]] でない ([[利用者]]の動作によらない)
場合はそもそも[[ポップアップ]]に至りません。
[98] ([[利用者]]の明示的な指示によらずに) 新しい[[閲覧文脈]]を開く場合、
次のいずれの動作とするか、[[利用者が設定][Webブラウザー利用者の設定]]できることがあります。
[FIG(list)[
- [99] 新しい[[閲覧文脈]]を開く (通常はこれが既定値となっています)
-- [100] 新しい[[窓]]を開く
-- [115] 新しい[[タブ]]を開く
- [110] 現在の[[閲覧文脈]]で開く (この選択肢を提供することが[RUBYB[推奨]@en[encourage]]されています [SRC[>>20]])
- [116] 何も開かない
]FIG]
;; [117] ただし[[砂箱化]]のために基本的に何も開かないべき場合 (>>96) もあります。
その場合であっても新しい[[閲覧文脈]]や現在の[[閲覧文脈]]を使う選択肢を提示できます
(それが既定値であっては[['''なりません''']] [SRC[>>20]])。
[119] [[ポップアップ]]が拒否された旨の表示 (>>95) がある場合、
そこから[[利用者]]が有効に[[設定][Webブラウザー利用者の設定]]変更したり、手動で [[navigate]] したりできるかもしれません。
(その [[navigate]] は元の処理の続きではなく、新たに実行することとなります。)
;; [191] >>117 のような他の[[閲覧文脈]]の利用や >>119 のような手動の [[navigate]]
は、元の[[著者]]が想定していた[[砂箱化]]の指定を無視することになるかもしれず、
注意が必要です。 ([[砂箱化]]も参照。)
[192] [[ポップアップ]]の挙動の[[設定][Webブラウザー利用者の設定]]は、[[利用者エージェント]]全体のものだけでなく、
>>119 などにより[[閲覧文脈]]ごと、[[文書]]ごとなどの単位で指定できるかもしれません。
** 選択処理
[179] [[閲覧文脈]]の選択は、次のようにして行われます。
[FIG(steps)[
= [132] [[利用者]]が新しい[[閲覧文脈]]を作ることを指示した場合、
== [133] [VAR[noopener]] について[[閲覧文脈の作成]]を行い、選択します [SRC[>>130, >>231]]。 (>>200 も参照。)
== [134] [[one permitted sandboxed navigator]] を、現在の[[閲覧文脈]]に設定します
[SRC[>>130, >>231]]。
== [176] [[置換有効]]フラグを、[[真]]に設定します [SRC[>>231]]。
= [135] それ以外で、[[利用者]]が特定の[[閲覧文脈]]を使うよう指示した場合、
== [136] その[[閲覧文脈]]を選択します [SRC[>>130, >>165, >>231]]。
== [122] [VAR[[[利用者]]が[[閲覧文脈]]を明示した]]フラグを、[[真]]に設定します。
= [181] それ以外で、[[要素]]や[[メソッド]]の指示があれば、それにより選択します (>>168)。
= [182] それ以外の場合、[[文書]]の指示により選択します (>>147)。
]FIG]
;; [167] [[フォームの提出]]に関して、仕様書は[[利用者]]に新しい[[閲覧文脈]]を作成することを指示された場合について明記していません。
;; [173] 仕様上、[[ハイパーリンクをたどる]]場合で[[利用者]]が新しい[[閲覧文脈]]を作らせた場合に[[置換有効]]フラグ (>>176) は設定されないようですが、
意図的にそうしているのかは不明です。不具合のようにも思われます。
[207] [[利用者]]が新しい[[閲覧文脈]]を作成することを指示した場合、
[[著者]]の指示していた場合 (>>18) の細かな挙動の違いは生じないことになります。
特に、 ([[著者]]の指示の有無に関わらず) 作成される[[閲覧文脈]]はただの[[最上位閲覧文脈]]で、
[[補助閲覧文脈]]とはなりません ([CODE(JS)@en[window.opener]] を持ちません)。
** 要素からの選択
[168] [[要素]]や[[メソッド]]の指示による選択は、次の通り行います。
[FIG(steps)[
= [137] [[ハイパーリンクをたどる]]処理では、[[ハイパーリンク]]の[[要素]]について、
== [175]
[FIG(list)[
- [145] [CODE(HTMLe)@en[[[a]]]] [[要素]]や [CODE(HTMLe)@en[[[area]]]] [[要素]]の場合で、
- [146] [CODE(HTMLa)@en[[[target]]]] [[属性]]がある場合、
]FIG]
=== [138] [[属性値]]に[[閲覧文脈名から閲覧文脈を選ぶ規則]]を適用します。 [SRC[>>130]]
= [169] [[フォームの提出]]では、[[提出者]]の[[要素]]について、
== [158] [[要素]]が[[提出ボタン]]で、 [CODE(HTMLa)@en[[[formtarget]]]] [[属性]]がある場合、
=== [159] [CODE(HTMLa)@en[[[formtarget]]]] [[属性値]] [SRC[>>155]]
に[[閲覧文脈名から閲覧文脈を選ぶ規則]]を適用します。 [SRC[>>165]]
== [160] [[フォーム所有子]]があり、それに [CODE(HTMLa)@en[[[target]]]] [[属性]]がある場合、
=== [161] [CODE(HTMLa)@en[[[target]]]] [[属性値]] [SRC[>>155]]
に[[閲覧文脈名から閲覧文脈を選ぶ規則]]を適用します。 [SRC[>>165]]
= [174] [CODE(JS)@en[[[window.open]]]] (相当) では、
== [177] 第2引数 (省略時や[[空文字列]]時は [CODE(HTML)@en[[[_blank]]]])
に、[[閲覧文脈名から閲覧文脈を選ぶ規則]]を適用します。 [SRC[>>231]]
]FIG]
;; [151] [CODE(HTMLe)@en[[[link]]]] [[要素]]では、 [CODE(HTMLa)@en[[[target]]]]
[[属性]]があっても無視されます。
** 文書からの選択
[147] [[文書]]の指示による選択は、次のようにしなければ[['''なりません''']]。
[FIG(steps)[
= [162] [F[節点文書]]の[[子孫]]で [CODE(HTMLa)@en[[[target]]]] [[属性]]のある
[CODE(HTMLe)@en[[[base]]]] [[要素]]がある場合、
== [163] 該当する最初の [CODE(HTMLe)@en[[[base]]]] [[要素]]の [CODE(HTMLa)@en[[[target]]]]
[[属性]] [SRC[>>130, >>155]] に[[閲覧文脈名から閲覧文脈を選ぶ規則]]を適用します。
[SRC[>>130, >>165]]
= [180] それ以外の場合、[F[節点文書]]の[F[閲覧文脈]]とします [SRC[>>130, >>165, >>155, >>20]]。
]FIG]
;; [148] [CODE(JS)@en[[[window.open]]]] (相当) の処理では、
必ず[[メソッド]]の指定による処理が行われるので、こちらの選択方法が適用されることはありません。
;; [157] [[HTML Standard]] では、[[要素]]の[DFN[[RUBYB[[[対象]]]@en[target]]]]
[SRC[>>155]] を使って規定されています。
[[対象]]とは、選択時に適用される [CODE(HTMLa)@en[[[target]]]]/[CODE(HTMLa)@en[[[formtarget]]]]
[[属性値]] (なければ[[空文字列]]) のことです。
** 名前の解決
[18] [DFN[[RUBYB[[[閲覧文脈名から閲覧文脈を選ぶ規則]]]@en[the rules for choosing a browsing context given a browsing context name]]]] [SRC[>>20]]
とは、次のようにすることです。
[FIG(steps)[
= [46] [[閲覧文脈名]]が[[空文字列]]なら、
== [57] 現在の[[閲覧文脈]]を選択します [SRC[>>20]]。
= [55] [[閲覧文脈名]]が [[ASCII大文字・小文字不区別]]で [CODE(HTML)@en[[[_self]]]] なら、
== [58] 現在の[[閲覧文脈]]を選択します [SRC[>>20]]。
= [60] [[閲覧文脈名]]が [[ASCII大文字・小文字不区別]]で [CODE(HTML)@en[[[_parent]]]] なら、
== [62] [[親閲覧文脈]] (なければ現在の[[閲覧文脈]]) を選択します [SRC[>>20]]。
= [63] [[閲覧文脈名]]が [[ASCII大文字・小文字不区別]]で [CODE(HTML)@en[[[_top]]]] なら、
== [64] [[最上位閲覧文脈]] (なければ現在の[[閲覧文脈]]) を選択します [SRC[>>20]]。
= [84]
[FIG(list)[
- [85] [[閲覧文脈名]]が [[ASCII大文字・小文字不区別]]で [CODE(HTML)@en[[[_blank]]]] ''以外''で、
- [86] 同名の[[閲覧文脈]]が存在し、
- [87] 現在の[[閲覧文脈]]と [[familiar with]] 関係にあり、
- [88] 両者に十分関係性があると[[利用者エージェント]]が判断するなら、
]FIG]
== [89] その[[閲覧文脈]]を選択します [SRC[>>20]]。
==- [90] 複数候補があれば、何らかの一貫した方法
(開かれたのが最直近、[[焦点]]が当たったのが最直近、最も関係が深い、など)
でいずれかを選ぶ[['''べきです''']]。 [SRC[>>20]]
= [93] [[allowed to show a popup]] で''ない''場合で、
[[ポップアップ]]しないよう[[利用者エージェント]]が設定されている場合、
== [94] どの[[閲覧文脈]]も選択しません [SRC[>>20]]。
== [95] [[ポップアップ]]がブロックされたことを[[利用者]]に通知して構いません [SRC[>>20]]。
= [114] そうでない場合、[[利用者]]の設定に基づき、
新しい[[閲覧文脈]]を選ぶか、現在の[[閲覧文脈]]を選ぶか、[[閲覧文脈]]を選ばないかを決めます [SRC[>>20]]。
=- [96] 現在の[[閲覧文脈]]の[[活性文書]]の[[活性砂箱化フラグ集合]]に [[sandboxed auxiliary navigation browsing context flag]] が設定されている場合は、
原則として[[閲覧文脈]]を選ばないこととします。 [SRC[>>20]]
=- [126] その場合も他の選択肢を[[利用者]]が選べるようにしても構いません。
しかしそれが既定値であっては[['''なりません''']]。 [SRC[>>20]]
= [101] 新しい[[閲覧文脈]]を作成する場合、
== [123] [VAR[noopener]] について[[閲覧文脈の作成]]を行い[[補助閲覧文脈]]を作成し、選択します [SRC[>>20]]。 (>>200 も参照。)
これを[VAR[閲覧文脈]]とします。
== [124] [F[[[opener閲覧文脈]]]]を、現在の[[閲覧文脈]]に設定します [SRC[>>20]]。
== [103] 指定された[[閲覧文脈名]]が [[ASCII大文字・小文字不区別]]で [CODE(HTML)@en[[[_blank]]]] の場合や、
現在の[[閲覧文脈]]の[F[[[活性文書]]]]の[F[[[活性砂箱化フラグ集合]]]]に [F[[[sandboxed auxiliary navigation browsing context flag]]]] が設定されている場合は、
=== [194] [F[[[閲覧文脈名]]]]を、[[空文字列]]に設定します [SRC[>>20]]。
== [97] それ以外の場合は、
=== [195] [F[[[閲覧文脈名]]]]を、指定された値に設定します [SRC[>>20]]。
== [111] [VAR[フラグ集合]]を、現在の[[閲覧文脈]]の[F[活性文書]]の[F[活性砂箱化フラグ集合]]に設定します。 [SRC[>>20]]
== [142] [VAR[フラグ集合]]の[F[砂箱化navigate閲覧文脈フラグ]]
の [F[sandboxed navigation browsing context flag]] が設定されている場合、
=== [143] [VAR[閲覧文脈]]の [F[one permitted sandboxed navigator]] を、
現在の[[閲覧文脈]]に設定します。 [SRC[>>20]]
== [213] [VAR[フラグ集合]]の [F[sandbox propagates to auxiliary browsing contexts flag]]
が設定されている場合、
=== [112] [VAR[フラグ集合]]で設定状態にある各[VAR[フラグ]]について、
==== [113] [VAR[閲覧文脈]]の[F[ポップアップ砂箱化フラグ集合]]の[VAR[フラグ]]を設定します。
[SRC[>>20]]
== [193] [[置換有効]]フラグを、[[真]]に設定します。 [SRC[>>130, >>165, >>231]]
== [244] [[補助閲覧文脈]]の場合、
=== [224] [VAR[字句化済機能群]]について、
[CITE[[[CSSOM View]]]] の[[規定]]を適用します [SRC[>>231, >>243]]。
これにより[[窓]]の大きさなどが決まります。
== [220] [VAR[閲覧文脈]]の [F[script-closable]] の[[スクリプト]]が作成したか[[利用者]]が作成したかの情報を保存します。
= [106] 現在の[[閲覧文脈]]を再利用する場合、
== [107] 現在の[[閲覧文脈]]を選択します [SRC[>>20]]。
= [108] [[閲覧文脈]]を選ばない場合、
== [109] どの[[閲覧文脈]]も選びません [SRC[>>20]]。
]FIG]
[127] 関連性の決定 (>>88) をどのように行うのか、明記はされていません。
[91] [CODE(DOMi)@en[Window]] [[オブジェクト]]の[[名前付き特性]]や配列風アクセスが可能なことを考えると、
[[子供閲覧文脈]]を優先して選択するべきと思われます。
[129] 自身の[F[opener閲覧文脈]]を除く、
他の[[最上位閲覧文脈]]に属する[[入れ子閲覧文脈]]は、関連性が低いかもしれません。
[[利用者]]の混乱を避けるため、そのような[[入れ子閲覧文脈]]の選択は認めるべきではないかもしれません。
[92] 自身またはその[[先祖]]や[[子孫]]の関係にある[[閲覧文脈]]が[[opener閲覧文脈]]となった[[補助閲覧文脈]]を除き、
[[最上位閲覧文脈]]を選択するのも不適切かもしれません。
[128] [CODE(HTMLa)@en[[[sandbox]]]] からの[[ポップアップ]] (>>96) では[[砂箱化フラグ集合]]が引き継がれることになっていますが、
既存の[[閲覧文脈]]を再利用する場合適用されないことになります。
危険かもしれないので、関連しないと判断するべきなのかもしれません。
** 次の処理
[154] [CODE(HTMLe)@en[[[a]]]] [[要素]]や [CODE(HTMLe)@en[[[area]]]]
[[要素]]の[[活性化動作]]から[[ハイパーリンクをたどる]]場合で、
どの[[閲覧文脈]]も選ばれなかった場合には、
[[ハイパーリンクをたどる]]手順はなにもしないで終了します。
[HISTORY[
それが[[スクリプト]]内からの呼び出しの場合には、 [CODE(DOMe)@en[[[InvalidAccessError]]]]
[[例外]]が[[投げられます]]。
[171] [[フォームの提出]]の際に[[閲覧文脈]]が選択されなかった場合にどうなるのかは、定かではありません。
[178] [CODE(JS)@en[[[window.open]]]] (相当) で[[閲覧文脈]]が選ばれなかった場合、
[CODE(JS)@en[[[InvalidAccessError]]]] [[例外]]が[[投げられます]]。
[DEL[
[189] [CODE(HTMLa)@en[[[seamless]]]] の扱いに関する処理は、本規則による選択ではなく、
その後の [[navigate]] 内で行われます。本規則による選択の後新たな[[タスク]]で
[[navigate]] を実行する場合もあるため、それまでに [CODE(HTMLa)@en[[[seamless]]]]
に関する状況が変わっているかもしれません。
;; [[navigate]] 参照。
]DEL]
]HISTORY]
** 新しい閲覧文脈のレンダリング
@@ [139] XXX
[217] 新しい[[閲覧文脈]]であれ、既存の[[閲覧文脈]]であれ、
他の[[窓][窓 (Web)]]に[[リンク先]]を開いた場合、
その[[窓][窓 (Web)]]に表示と[[フォーカス]]が移ることが期待されています。
特に[[スマートフォン]]のような単一の[[窓]]しか同時に表示できない[[プラットフォーム]]では、
裏側で[[閲覧文脈]]が開いていても[[利用者]]が気づきません。
[218] ただし、[[Webブラウザー]]によっては、[[利用者]]が明示的に新しい[[閲覧文脈]]に[[フォーカス]]を移動しないオプションを提供していることがあります。
[[リンク集]]ページから多数の[[リンク先]]を順に開いていきたい時に便利です。
* 関連
[219] [[閲覧文脈の選択]]よりも後に、 [[navigate]] 内で [[allowed to navigate]]
の検査があります。 [CODE(HTML)@en[[[sandbox]]=[[allow-top-navigation]]]]
などの指定はそちらで反映されます。
* 歴史
** 誕生
[24]
[CODE(HTMLa)@en[[[target]]]] [[属性]]は、
[[フレーム]]機能の一部として [[Netscape Navigator]] 2
で導入されました。
@@ どの[[要素]]に? [[Windows]] 版以外では?
[40]
[CITE[New HTML 3.0 Proposals]] ([CODE[2007-02-26 21:59:55 +09:00]] 版) <http://wp.netscape.com/assist/net_sites/new_html3_prop.html#Target>
([[名無しさん]])
[41]
[CITE[How to target a link to a window]] ([CODE[2007-02-28 00:30:29 +09:00]] 版) <http://web.archive.org/web/19970613222251/www82.netscape.com/eng/mozilla/2.0/relnotes/demo/target.html>
** [CODE(DOMi)@en[Window-Target:]] ヘッダー (HTTP)
[2] HTML で言うところの base 要素の target 属性的な HTTP 頭欄。
Netscape Navigator 2.0 以降の独自拡張。
[EG[
[3]
[PRE(HTTP code)[
Window-Target: _top
]PRE]
]EG]
** 標準化
[25] [[HTML 4]] で、[[非推奨]]ながら
[CODE(HTMLe)@en[[[a]]]],
[CODE(HTMLe)@en[[[area]]]],
[CODE(HTMLe)@en[[[base]]]],
[CODE(HTMLe)@en[[[form]]]],
[CODE(HTMLe)@en[[[link]]]]
に [CODE(HTMLa)@en[[[target]]]] が追加されました。
[19] HTML 4.0 仕様書本文の [CODE(HTMLe)[[[frame]]]] 要素と [CODE(HTMLe)[[[iframe]]]]
要素の定義には誤って [CODE(HTMLa)[target]] 属性の定義への参照が含まれていました。
- [CSECTION@en[A.1.2 Errors that were corrected]]
<IW:HTML4:"appendix/changes.html#h-A.1.2">
[26] [[XHTML m12n]] では、
[[対象属性]][[モジュール]]という独立した[[モジュール]]が定義されました。
[27] [[XHTML 1.1]] [[1e]]
は[[対象属性]][[モジュール]]を組み込みませんでした。
[[#comment]]
*** 暗黒時代
[28] [CODE(HTMLa)@en[[[target]]]] が[[非推奨]]となり、
[[厳密DTD]] や [[XHTML 1.1]] に含まれませんでしたが、
既に下火になっていた[[フレーム]]はともかく、
[CODE(HTML)@en[[CODE(HTMLa)@en[[[target]]]]=[[_blank]]]]
への需要は高く、形式的な[[妥当性]]を得つつも
[CODE(HTMLa)@en[[[target]]]] を使いたいという要求が少なくありませんでした。
[29] [[妥当性]]と [CODE(HTMLa)@en[[[target]]]]
の両方を求める人たちは、 [[JavaScript]] と [[DOM]]
で、 [CODE(DOMa)@en[[[target]]]] や
[CODE(DOMm)@en[[[open]]]] などを用いて
[CODE(HTMLa)@en[[[target]]]] を実現しようとするなどの本末転倒な[RUBY[回避法] [ごまかし]]に走り出しました。
[30] >>29 のような手法は、本来[[宣言的]]に記述できるものをあえてわかりにくくすることで、
[[アクセス可能性]]や[[利用可能性]]に劣るといわれています。
[31] このような背景から、 [CODE(HTMLa)@en[[[target]]]]
の[Q[復活]]を求める意見もあります。
*** 再評価
[75] [CODE(HTMLa)@en[[[target]]]] は [[HTML]] に不適当との考えから90年代末に排除の方向へと進みましたが、
代替がなかったために >>28 のように非本質的な書き換えが横行するなど、事態はむしろ悪化していました。
意味的潔癖性を追求するよりはむしろ実利も含めて総合的に判断するべきとの考えが支持されるようになり、
2000年代の終わりには一部の原理主義者を除いて完全に容認する方向へ進んでいます。
**** XHTML2
[32]
[[XHTML 2.0]] では、 [[XFrames]] との関係もあって、
[CODE(HTMLa)@en[[[target]]]] が[Q[復活]]しました。
[73] [[XHTML2]] の最初の[[作業原案]]で、[[ハイパーテキスト属性集成]]に属し、
実質すべての [[XHTML2]] [[要素]]で利用できるものとして規定されるようになりました。
;; [CITE@en[- XHTML Attribute Collections]] ([TIME[2002-08-06 00:20:43 +09:00]] 版) <http://www.w3.org/TR/2002/WD-xhtml2-20020805/mod-attribute-collections.html#adef_attribute-collections_target>
[71] [CITE@en[target attribute]] ([[Shane McCarron]] 著, [TIME[2009-01-25 04:02:09 +09:00]] 版) <http://lists.w3.org/Archives/Public/public-xhtml2/2009Jan/0077.html>
>@target is defined in the
hypertext attributes module. I believe this should be moved into a
target attribute module so that it can be more easily omitted from
languages that do not want to support it.
**** XHTML1
[34] [[XHTML 1.1]] には元々 [CODE(HTMLa)@en[[[target]]]] [[属性]]は含まれていませんでしたが、
旧 [[HTML WG]] (後の [[XHTML2 WG]]) は [[XHTML 1.1 2e]] [[WD]]
で[[対象属性モジュール]]を「復活」させました。
;; ただし、旧 [[HTML WG]] の仕様書は例によって杜撰で、追加されたのは [[DTD]] 実装だけで
[[XML Schema]] 実装や[[文書型]]の定義には含まれていませんでした。
[35]
更に [[XHTML Basic 1.1]] [[WD]]
でも[[対象属性モジュール]]が「復活」させられました。
[36] しかし、 [[XHTML Basic]] の主要な適用対象である[[携帯電話]]の業界は、
[CODE(HTMLa)@en[[[target]]]] [[属性]]は[[携帯電話]]の
[[Webブラウザ]]では実装できない機能だとして >>35 に反発しました。
[74]
結局 [[XHTML2 WG]] (旧 [[HTML WG]]) は [[XHTML Basic 1.1]]
が[[勧告]]に至るまでに次のような注記が追加されることで反発を抑えました。
- [CODE(HTMLa)@en[[[target]]]] [[属性]]は[[フレーム]]、複数[[窓]]、[[タブ]]など[RUBYB[[[外部環境]]]@en[external environment]]に束縛するための一般的なフックとして設計されている
-- 外部環境が利用できない[[利用者エージェント]]では [CODE(HTMLa)@en[[[target]]]] [[属性]]を無視してもよい
-- 束縛された外部環境がある時は [CODE(HTMLa)@en[[[target]]]] [[属性]]の適合性要件は各外部環境で定義される
- [[著者]]は[[利用者エージェント]]の [CODE(HTMLa)@en[[[target]]]] [[属性]]に注意する必要がある
-- 外部環境の束縛の有無、利用可能な資源の制約、アプリケーションや利用者の設定、実装依存の設計方針などに依存する
-- 外部環境適合性が存在しないときは [CODE(HTMLa)@en[[[target]]]] [[属性]]に依存しないことを推奨する
- 実装依存の [CODE(HTMLa)@en[[[target]]]] [[属性]]の用法は[[相互運用性]]の妨げとなりかねないことに注意されたい
;; [CITE[XHTML™ Basic 1.1]] ([TIME[2008-07-27 02:02:25 +09:00]] 版) <http://www.w3.org/TR/2008/REC-xhtml-basic-20080729/#s_xhtmlmodules>
[76] >>74 の注記は一見普通のことを言っているように見えますが、よくよく考えてみるとまったく無茶苦茶です。
- そもそもこの記述は [[XHTML Basic]] にまったく依存していないのだから、
[[XHTML m12n]] あるいは [[HTML4]] の改訂によって追加するべき注意なのではないか
-- 実際、後に [[XHTML 1.2]] [[ED]] にもコピペされている
- 「一般的なフックとして設計されている」という記述は事実なのかどうか
-- 少なくても [[HTML4]] にはそんなことは書かれていない
- 適合性に関する記述が「Note」として記述されているが、仕様書の作法としてありなのかどうか
-- たしかに Note は informative との記述はどこにもないが、 normative とも明記されていないし、
Note は informative だといっている仕様書もあるから、少なくても confusing ではある
- [[適合性]]が[[利用者エージェント]]に依存するなんて態度でいいのかどうか
- [[著者]]にとっても[[実装者]]にとっても「注意しろ」としか書かれていない仕様書に一体なんの意味があるのか
- そもそも [[XHTML1]] シリーズは[[クライアント]]の環境に合わせた[[プロファイル]]を作ることによって
[[device independence]] を実現するのが方針ではなかったのか
-- そのためにわざわざ [CODE(HTMLa)@en[[[target]]]] [[属性]]が単独の [[XHTMLモジュール]]となっているのに、
それを敢えて追加して「無視してもよい」などと注記する意味はどこにあるのか
**** HTML5
[17]
[[Web Forms 2.0]] で、
[CODE(HTMLe)@en[[[input]]]]
([CODE(HTML)@en[[[image]]]]、[CODE(HTML)@en[[[submit]]]])、
[CODE(HTMLe)@en[[[button]]]] ([CODE(HTML)@en[[[submit]]]])
に追加されました。特に[[非推奨]]との記述はありません。
[[XHTMLモジュール]]定義 ([[参考]]) では、
多[[窓]]や[[フレーム]]に対応しているときに
[CODE(HTMLa)@en[[[target]]]] [[属性]]が定義されるとされています。
[33]
[[Ian Hickson]] は、2007年2月、 [[Web Applications 1.0]]
への [CODE(HTMLa)@en[[[target]]]] の追加について、
[CODE(HTMLe)@en[[[iframe]]]] 対応のために必要との見解を
#whatwg で示しています。
それによると、存在しない[[フレーム名]]を指定するのは[[不適合]]、
存在する[[フレーム名]]を指定するのは[[適合]]とするつもりだそうです。
** 例
[9] 単純な例 [SRC[HTML 4 16.3]]
フレーム文書:
[PRE(HTML)[
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN"
"http://www.w3.org/TR/html4/frameset.dtd">
<HTML>
<HEAD>
<TITLE>A frameset document</TITLE>
</HEAD>
<FRAMESET rows="50%,50%">
<FRAME name="fixed" src="init_fixed.html">
<FRAME name="dynamic" src="init_dynamic.html">
</FRAMESET>
</HTML>
]PRE]
[SAMP(URI)[init_dynamic.html]]:
[PRE(HTML)[
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<HTML>
<HEAD>
<TITLE>A document with anchors with specific targets</TITLE>
</HEAD>
<BODY>
...beginning of the document...
<P>Now you may advance to
<A href="slide2.html" target="dynamic">slide 2.</A>
...more document...
<P>You're doing great. Now on to
<A href="slide3.html" target="dynamic">slide 3.</A>
</BODY>
</HTML>
]PRE]
ここで、 [SAMP(URI)[init_dynamic.html]] 内の2つのリンクのいずれを辿っても、
[SAMP(HTML)[fixed]] フレームは不変で、 [SAMP(HTML)[dynamic]]
フレームだけが変わります。
[13] [CODE(HTMLe)[base]] [CODE(HTMLa)[target]] の例
[SRC[HTML 4 16.3.1]]
[PRE(HTML)[
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<HTML>
<HEAD>
<TITLE>A document with BASE with a specific target</TITLE>
<BASE href="http://www.mycom.com/Slides" target="dynamic">
</HEAD>
<BODY>
...beginning of the document...
<P>Now you may advance to <A href="slide2.html">slide 2.</A>
...more document...
<P>You're doing great. Now on to
<A href="slide3.html">slide 3.</A>
</BODY>
</HTML>
]PRE]
>>9 ではそれぞれの [CODE(HTMLe)[a]] に [CODE(HTMLa)[target]]
を指定しましたが、その文書のリンクの [CODE(HTMLa)[target]]
がすべて同じなら、 [CODE(HTMLe)[base]] でまとめて指定しておくのが便利です。
[[#comment]]
** メモ
[1]
[PRE[
::frame ("frame-name") a {
target: "another-frame-name";
}
]PRE]
みたいな感じのことができると、
[CODE(HTMLa)[target]] 属性もいらないし、
特定の frameset だけに依存せずに style sheet を書けるよね。
最近の CSS3 draft はどうなっているのだろう?
[21]
携帯電話業界から [[XHTML Basic 1.1]] に [CODE(HTMLa)@en[[[target]]]] を追加することへの反対が結構強いね。。。
([[名無しさん]] [WEAK[2006-08-12 15:04:21 +00:00]])
[22]
[CITE@ja[target属性の利便性 (kuruman.org > 駄的HTML改善計画)]] ([CODE[2007-02-18 00:31:14 +09:00]] 版)
<http://kuruman.org/dateki/target>
[37]
[CITE@ja[別窓指定の理想論 (kuruman.org > Kuruman Memo)]] ([CODE[2007-02-23 02:50:28 +09:00]] 版) <http://kuruman.org/diary/2007/02/23/target-blank>
([[名無しさん]] [WEAK[2007-02-23 16:03:46 +00:00]])
[38]
[CITE@ja[target="_blank"は多数派? (kuruman.org > Kuruman Memo)]] ([CODE[2006-09-09 01:47:03 +09:00]] 版) <http://kuruman.org/diary/2007/02/24/is-target-blank-popular>
([[名無しさん]] [WEAK[2007-02-25 02:10:35 +00:00]])
[39]
[CITE[別サイトへの target="_blank" は優しいか]]
<http://pc10.2ch.net/test/read.cgi/hp/1136738511/>
おもしろい統計がでている
<http://pc10.2ch.net/test/read.cgi/hp/1136738511/834>
([[名無しさん]] [WEAK[2007-02-25 02:11:46 +00:00]])
[42]
[CITE@ja[target="_blank"によるリスクの軽減:メモランダム]] ([CODE[2007-02-22 23:32:51 +09:00]] 版) <http://elastic965.80code.com/blog/2007/02/target_blank>
([[名無しさん]] [WEAK[2007-03-08 14:00:59 +00:00]])
[43]
[CITE[まじかんと雑記: Re: target="_blank"によるリスクの軽減]] ([CODE[2007-03-08 23:00:43 +09:00]] 版) <http://magicant.txt-nifty.com/main/2007/02/re_target_blank_e80b.html>
([[名無しさん]] [WEAK[2007-03-08 14:02:18 +00:00]])
[44]
[CITE@ja-JP[無爲徒食日記 二千七年二月]] ([[眞名垣 郁夫]] 著, [CODE[2007-02-28 15:45:43 +09:00]] 版) <http://lan.rgr.jp/diary/2007/02#Twentyfive-One>
([[名無しさん]] [WEAK[2007-03-08 14:03:53 +00:00]])
[45]
<http://suika.fam.cx/~wakaba/-temp/test/dom/window/name/target-name-1.html>
[CODE(HTMLa)@en[[[target]]]] で新しい[[窓]]の[[名前]]を
([CODE(HTML)@en[newwindow]]) 指定し、
その[[リンク]]をたどって新たな[[閲覧文脈]]を作成します。
新しい[[閲覧文脈]]の[[名前]] ([CODE(JS)@en[[[window]].[[name]]]]) は
[CODE(HTML)@en[newwindow]] となるのが自然な動作です。
[[WinIE 6]] ([[Windows XP]] [[SP2]])、[[Opera]] 9
は実際そのように動作します。
[CODE(JS)@en[[[window]].[[name]]]] は
[CODE(HTML)@en[newwindow]] になりますし、
その中の [CODE(HTMLa)@en[[[target]]]] が
[CODE(HTML)@en[newwindow]] な[[リンク]]をたどると同じ[[窓]]で開かれます。
しかし、 [[Firefox]] 1.5 は、新しい窓を新しいタブとして開く設定になっていると、
[[名前]]を持たない ([CODE(JS)@en[[[window]].[[name]]]]
が[[空文字列]]の) [[閲覧文脈]]が作られてしまいます。
新しい窓として開く設定になっていれば [[WinIE]]
や [[Opera]] と同じく [CODE(JS)@en[[[window]].[[name]]]]
は [CODE(HTML)@en[newwindow]] になります。
([[名無しさん]])
[47]
[CITE[XHTML 1.1 Modularization Anchor Element Target Attribute - www.TexaStar.com]] ([[Texastar.com WebMaster@TexaStar.com]] 著, [CODE[2007-08-14 21:17:48 +09:00]] 版) <http://www.texastar.com/tips/2004/target_blank.shtml>
([[名無しさん]])
[48]
[CITE@en[Sparanoid » Blog » XHTML 1.1 plus Target 1.0 and other modularizations]] ([[Sparanoid]] 著, [CODE[2007-08-14 21:24:36 +09:00]] 版) <http://sparanoid.com/blog/xhtml-11-plus-target-10-and-other-modularizations/>
([[名無しさん]])
[49]
[CITE[torresburriel.com » Blog Archive » Añadir el módulo target a XHTML 1.1]] ([CODE[2007-08-14 21:25:50 +09:00]] 版) <http://www.torresburriel.com/weblog/2004/04/19/anadir-el-modulo-target-a-xhtml-11/>
([[名無しさん]])
[50]
[CITE@pl[Łukasz Aranowski - strona domowa (Aster, Astercity, MP3, stacje, Kolejarz, Microsoft, XHTML, zdjęcia i inne...)]] ([[Lukasz Aranowski]] 著, [CODE[2007-08-14 21:28:31 +09:00]] 版) <http://www.mendel.pl/index.php?co=xhtml>
([[名無しさん]])
[51]
[CITE@pl[Do podstrony - Odsyłacze - Kurs HTML]] ([[Sławomir Kokłowski]] 著, [CODE[2007-08-12 00:17:26 +09:00]] 版) <http://www.kurshtml.boo.pl/html/do_podstrony,odsylacze.html>
([[名無しさん]])
[52]
[CITE[net2ftp forum / Doctype]] ([CODE[2007-08-14 21:41:03 +09:00]] 版) <http://www.net2ftp.org/forums/viewtopic.php?pid=6679>
([[名無しさん]])
[53]
[CITE@en[Standards-Compliant New Windows | Accessify]] ([[Ian Lloyd, Accessify '''['''http://www.accessify.com/''']''']] 著, [CODE[2007-08-17 23:17:09 +09:00]] 版) <http://www.accessify.com/features/tutorials/new-windows/>
([[名無しさん]])
[54]
[CITE@en[XHTML 1.1 plus Target 1.0 DTD — Information]] ([CODE[2007-09-24 16:17:49 +09:00]] 版) <http://suika.fam.cx/gate/2007/schema/schema/dd9db9d3e91e5444c7741e0d0e3943b2/prop.html>
([[名無しさん]])
[56]
[CITE[Thermaglaze Double Glazing]] ([CODE[2008-03-01 12:20:27 +09:00]] 版) <http://www.thermaglaze.com/>
([CODE(MIME)@en[[[text/html]]]])
[PRE(HTML bad example code)[
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"
[ <!ATTLIST a target CDATA #IMPLIED> ]>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
]PRE]
([[名無しさん]])
[61]
[CITE[The target="" attribute]] ([[Ian Hickson <ian@...>]] 著, [CODE[2008-04-21 05:21:56 +09:00]] 版) <http://permalink.gmane.org/gmane.org.w3c.whatwg.discuss/13793>
([[名無しさん]])
[65]
[CITE[Lachy’s Log » Blog Archive » Conforming target Attribute]] ([CODE[2008-07-26 22:40:57 +09:00]] 版) <http://lachy.id.au/log/2008/04/target-attribute>
([[名無しさん]])
[66]
[CITE@ja[冬様もすなる☆日記というもの (2008年10月)]] ([[わかば]] 著, [TIME[2008-10-17 18:50:52 +09:00]] 版) <http://suika.fam.cx/~wakaba/d/d200810#d17-2>
[67] 類似の属性に、 [[SMIL]] の [CODE(XMLa)@en[[[show]]]]
[[属性]]や [[XLink]] の [CODE(XMLa)@en[xlink:[[show]]]] [[属性]]、
[[SVG]] の [CODE(XMLa)@en[[[target]]]] [[属性]]、
[[OpenDocument]] の [CODE(XMLa)@en[meta:[[target-frame-name]]]] [[属性]]があります。
[[HTTP]] には [CODE(HTTP)@en[[[Window-Target]]:]] [[頭欄]]があります。
その他 [[API]] 等で同様の役割を果たす[[引数]]等もあります。
詳しくは [CODE@en[[[FrameTarget]]]] の項を参照してください。
[68] [CITE@en[MAMA: Frames - Opera Developer Community]] ([TIME[2008-11-25 20:37:51 +09:00]] 版) <http://dev.opera.com/articles/view/mama-frames/#target>
[69] [CITE[The SMIL 3.0 Linking Modules]] ([TIME[2008-12-02 00:45:09 +09:00]] 版) <http://www.w3.org/TR/2008/REC-SMIL3-20081201/smil-extended-linking.html#adef-target>
[70] [CITE[Linking – SVG Tiny 1.2]] ([TIME[2008-12-20 02:31:29 +09:00]] 版) <http://www.w3.org/TR/2008/REC-SVGTiny12-20081222/linking.html#AElementTargetAttribute>
[72] [CODE(HTMLa)@en[[[target]]]] は (「[[戻る]]」や「[[進む]]」や[[ハイパーリンク]]による前後の方向への「[[水平]]」な移動に対して)
「垂直ナビゲーション」を記述するものだと理解する考え方もあります。
[77] [CITE@en-GB-x-Hixie[Web Forms 2.0]]
([TIME[2009-01-05 20:07:15 +09:00]] 版)
<http://www.whatwg.org/specs/web-forms/current-work/#xhtml-module-def>
[78] [CITE@en[XFrames]]
( ([TIME[2010-12-17 00:45:08 +09:00]] 版))
<http://www.w3.org/TR/2010/NOTE-xframes-20101216/#s_links>
[79] >>78 によると、 [CODE(XMLa)@en[[[target]]]] が明示されていない場合、
その[[フレーム]]に [CODE(XMLa)@en[[[xml:id]]]] があればその[[フレーム]]、
なければ全体 ([CODE(HTML)@en[[[_top]]]]? その [[XFrames]] [[文書]]の最上位?)
が指定されたような動きになるようです。
[80] [CITE@en[WICD Core 1.0]]
( ([TIME[2010-08-17 16:51:00 +09:00]] 版))
<http://www.w3.org/TR/WICD/#child-documents>
[81] [CITE@en[Touch Events]]
( ([TIME[2013-10-12 10:35:42 +09:00]] 版))
<https://dvcs.w3.org/hg/webevents/raw-file/v1/touchevents.html#widl-Touch-target>
[82] [CITE[New HTML 3.0 Proposals]]
( ([TIME[2014-04-07 08:07:57 +09:00]] 版))
<http://web.archive.org/web/19970806103517/http://www31.netscape.com/assist/net_sites/new_html3_prop.html>
[83] [CITE[Welcome to Netscape Navigator Version 2.0]]
( ([TIME[2014-04-07 08:48:39 +09:00]] 版))
<http://web.archive.org/web/20030202175634/http://wp.netscape.com/eng/mozilla/2.0/relnotes/windows-2.0.html#Images>
[210] [CITE@en[Add an 'allow-popups-to-escape-sandbox' sandboxing token · whatwg/html@955fbaa]] ([TIME[2015-09-10 00:18:19 +09:00]] 版) <https://github.com/whatwg/html/commit/955fbaa>
[211] [CITE@en[Add a 'noopener' link attribute by mikewest · Pull Request #290 · whatwg/html]] ([TIME[2015-11-12 22:14:09 +09:00]] 版) <https://github.com/whatwg/html/pull/290>
[212] [CITE@en[Add a 'noopener' <link rel> keyword and window feature · whatwg/html@2992ea9]] ([TIME[2015-11-12 22:14:24 +09:00]] 版) <https://github.com/whatwg/html/commit/2992ea921bc75e44157451a37a807a8ce0b9a884>
[120] [CITE@en[Remove <iframe seamless> · whatwg/html@1490eba]]
([TIME[2016-02-04 19:20:59 +09:00]] 版)
<https://github.com/whatwg/html/commit/1490eba4dba5ab476f0981443a86c01acae01311>
[59] [CITE@en[Editorial: clarify follow a hyperlink algorithm · whatwg/html@d22a9f1]]
([TIME[2016-03-26 12:47:36 +09:00]] 版)
<https://github.com/whatwg/html/commit/d22a9f12e1cc13a77504fa6482b7ded6ba790b54>
[141] [CITE@en[Set "one permitted sandbox navigator" for all sandbox-created popups]]
([[mikewest]]著, [TIME[2016-09-13 00:53:04 +09:00]])
<https://github.com/whatwg/html/commit/ca6c42085dae650676ad90a0b852cc2e8c6feab7>
[214] [CITE@en[Allow <a>/<area> with download="" to not require user activation]]
([[domenic]]著, [TIME[2016-12-06 07:13:46 +09:00]])
<https://github.com/whatwg/html/commit/5de03c7b38e7b33a49f0dcf2bcef29e8eb9a2205>
[215] [CITE@en[Revert part of "Allow <a>/<area> with download="" to not require user…]]
([[zcorpan]]著, [TIME[2016-12-07 17:47:38 +09:00]])
<https://github.com/whatwg/html/commit/b359209579d79a713af88ecf24b9be8fb6168adf>
[216] [CODE(HTMLa)@en[href]] が [CODE(URI)@en[javascript:]] で [CODE(JS)@en[void]] を返し、
[CODE(HTMLa)@en[target]] が新しい[[閲覧文脈]]の時、
[[Firefox]] は [CODE(URI)@en[about:blank]] の新しい[[閲覧文脈]]を作り、
[[Chrome]] は作らないようです。
[TIME[2016-12-19T09:46:24.600Z]]
[209] [CITE@en[Should target=_blank and window.open('...', '_blank') be case sensitive? · Issue #2443 · whatwg/html]]
([TIME[2017-04-01 14:58:30 +09:00]])
<https://github.com/whatwg/html/issues/2443>
[221] [CITE[Intent to Deprecate and Remove: Cross-origin top navigation without a user gesture - Google グループ]]
( ([TIME[2017-04-07 02:51:26 +09:00]]))
<https://groups.google.com/a/chromium.org/forum/#!topic/blink-dev/Xi8-y4ySjA4>
[222] [CITE@en[640057 - Restrict the ability to navigate the top level context to content that is processing a user gesture, unless it is same-origin to the parent - chromium - Monorail]]
( ([TIME[2017-04-07 02:52:07 +09:00]]))
<https://bugs.chromium.org/p/chromium/issues/detail?id=640057>
[223] [CITE@en[Require a user gesture for a cross-origin frame to navigate the top-level page · Issue #16 · WICG/interventions]]
( ([TIME[2017-04-07 02:53:01 +09:00]]))
<https://github.com/WICG/interventions/issues/16>
**
[200] [[閲覧文脈の作成]]時は、
[FIG(list)[
- [201] 既存の[[閲覧文脈]]の[[スクリプト]]が作成する場合
- [202] 既存の[[閲覧文脈]]の[[リンク]]を[[利用者]]がたどっている場合
- [203] その他何らかの方法で特定の[[文書]]に関連する形の場合
]FIG]
... なら、 [DFN[[[a new start for session storage]]]] となった場合を除き、
[SRC[>>199]] それを[[セッションストレージ領域]]の処理において関係する[[文書]]としなければ[['''なりません''']]。
つまり、 [CODE(DOMm)@en[[[sessionStorage]]]] が新しい[[閲覧文脈]]に複製されることになります
(共有ではありません)。
;; [204] 「その他」とは何なのか、具体的には示されていませんし、
おそらくは本稿の[[閲覧文脈の選択]]の場合の一部が含まれていると思われます。
(>>201 と >>202 でカバーされないのは、[[利用者]]が[[フォーム提出]]する場合くらいでしょうか。)
理論上は、それ以外でも [[Webブラウザー]]の [[UI]] からの指示などで該当するものがあるかもしれません。
;; [104] >>201 と >>202 の場合どの[[文書]]か定かではありませんが、
[[リンク]]の場合はその[[節点文書]]でしょうか。
[[スクリプト]]の場合は[[入口設定群オブジェクト]]の[[有責文書]]でしょうか?
([[リンク]]を[[スクリプト]]で[[クリック]]したら?)
[140] 新しく作成される[[閲覧文脈]]は[[補助閲覧文脈]]となりますが、
既存の[[閲覧文脈]]を選択しても、それが[[補助閲覧文脈]]に変化することはありません。
つまり [CODE(JS)@en[window.open]] で得られた[[窓][窓 (Web)]]を
[CODE(JS)@en[window.close]] しても、閉じられない可能性があります。
[102] 以前は [CODE[[[rel=noreferrer]]]] の時 [[a new start for session storage]]
と定義されていましたが、現在はその定義がなくなっています [SRC[>>212]]。意図的なのかは不明です。
-*-*-
[105] [CITE@en[Make noopener stop the copying of session storage]]
([[mystor]]著, [TIME[2017-09-06 06:56:03 +09:00]])
<https://github.com/whatwg/html/commit/a68a1f712b641981d7367d78758596b21a04521c>
[225] [CITE@en[Mention `sessionStorage` copying in logic for creating auxiliary browsing contexts · Issue #2681 · whatwg/html]]
([TIME[2017-09-10 20:51:40 +09:00]])
<https://github.com/whatwg/html/issues/2681>
[226] [CITE@en[Mention sessionStorage copying in logic for creating a new browsing context by mystor · Pull Request #2832 · whatwg/html]]
([TIME[2017-09-10 20:53:25 +09:00]])
<https://github.com/whatwg/html/pull/2832>
**
[227] [CITE@en[Editorial: centralize target attribute processing]]
([[annevk]]著, [TIME[2017-09-06 16:17:43 +09:00]])
<https://github.com/whatwg/html/commit/0b31844d6dcc7ef49b3815f4f709d4c0284378f1>
[228] [CITE@en[Deduplicate finding the correct target attribute · Issue #2619 · whatwg/html]]
([TIME[2017-09-10 21:29:10 +09:00]])
<https://github.com/whatwg/html/issues/2619>
[229] [CITE@en[Editorial: centralize target attribute processing by annevk · Pull Request #3007 · whatwg/html]]
([TIME[2017-09-10 21:29:40 +09:00]])
<https://github.com/whatwg/html/pull/3007>
[230] [CITE@en[Regression fix: continue to defer to CSSOM for window.open()'s features]]
([[annevk]]著, [TIME[2017-10-10 02:35:35 +09:00]])
<https://github.com/whatwg/html/commit/e1533f1dbb7405ffc0814bbc4eaf9e8b0442c035>
[232] [CITE@en[Regression fix: tokenize features earlier in window.open()]]
([[annevk]]著, [TIME[2017-10-10 01:59:23 +09:00]])
<https://github.com/whatwg/html/commit/0ce114d22c285dd52c64c5f00b2185e4ed8edf84>
[233] [CITE@en[Window open steps use tokenizedFeatures before setting it · Issue #3107 · whatwg/html]]
([TIME[2017-10-10 22:51:10 +09:00]])
<https://github.com/whatwg/html/issues/3107>
[235] [CITE@en[Regression fix: tokenize features earlier in window.open() by annevk · Pull Request #3108 · whatwg/html]]
([TIME[2017-10-10 22:53:02 +09:00]])
<https://github.com/whatwg/html/pull/3108>