[24] [DFN[[RUBYB[[[フレーム]]]@en[frame]]]]は、[[文書]]中に他の[[文書]]を埋め込むものです。
[[フレーム]]を表す[[閲覧文脈]]を、[[入れ子閲覧文脈]]といいます。

* 仕様書

[REFS[
- [51] [CITE@en-GB-x-hixie[HTML Standard]] ([TIME[2015-05-06 10:42:35 +09:00]] 版) <https://html.spec.whatwg.org/#the-iframe-element>
- [20] [CITE@en-GB-x-hixie[HTML Standard]] ([TIME[2015-05-06 10:42:35 +09:00]] 版) <https://html.spec.whatwg.org/#active-frame-element>
- [44] [CITE@en-GB-x-hixie[HTML Standard]] ([TIME[2016-05-20 22:03:07 +09:00]]) <https://html.spec.whatwg.org/#browsing-context-container>
- [77] [CITE@en[Mixed Content]], [TIME[2020-04-28 21:05:56 +09:00]] <https://w3c.github.io/webappsec-mixed-content/#embedding-document>
]REFS]

* 言語

[7] [[フレーム]]に関連する次の[[要素]]があります。

[FIG(list short)[ [68] [[フレーム]]の[[要素]]
- [CODE(HTMLe)@en[[[iframe]]]] ★

[HISTORY[
- [CODE(HTMLe)@en[[[object]]]] ★
- [CODE(HTMLe)@en[[[embed]]]] ★
- [CODE(HTMLe)@en[frame][<frame>]] ★
- [CODE(HTMLe)@en[[[frameset]]]]
- [CODE(HTMLe)@en[[[noframes]]]]
- [[XFrames]]
]HISTORY]
]FIG]

[47] このうち「★」が[[閲覧文脈包含子]]となり得るものです。

* 閲覧文脈包含子

[45] [[入れ子閲覧文脈]]の「[[親]]」[[要素]]に相当するものを、
[DFN[[RUBYB[[RUBY[閲][えつ]][RUBY[覧][らん]][RUBY[文][ぶん]][RUBY[脈][みゃく]][RUBY[包][ほう]][RUBY[含][がん]][RUBY[子][し]]]@en[browsing context container]]]] [SRC[>>44]] といいます。
[[フレーム]]を作る[[要素]]
(例えば
[CODE[iframe]]
[[要素]])
に当たります。


[46] [[閲覧文脈包含子]]は、次の状態を持ちます。
[FIG(list members)[
: [F[入れ子閲覧文脈]] :
: [F[内容文書]] :
]FIG]


-*-*-

[82] 
[[閲覧文脈]][VAR[閲覧文脈]]の[DFN[[F[[RUBYB[[RUBY[包][ほう]][RUBY[含][がん]][RUBY[子][し]]][container]]][閲覧文脈包含子]]]]は、
[[閲覧文脈包含子]]であって[F[入れ子閲覧文脈]]が[VAR[閲覧文脈]]であるようなものです。
そのような[[閲覧文脈包含子]]がなければ [CODE[null]] です。
[SRC[>>44]]



[84] 
[[閲覧文脈]][VAR[閲覧文脈]]の[DFN[[F[[RUBYB[[RUBY[包][ほう]][RUBY[含][がん]][RUBY[子][し]][RUBY[文][ぶん]][RUBY[書][しょ]]][container document]]][包含子文書]]]]は、
次のものです。
[SRC[>>44]]

[FIG(steps)[
=
[85] 
[VAR[閲覧文脈]]の[F[包含子][閲覧文脈包含子]]が
[CODE[null]] 
の場合、
==
[86] 
[CODE[null]]
を返します。
=
[87] 
それ以外の場合、
==
[88] 
[VAR[閲覧文脈]]の[F[包含子][閲覧文脈包含子]]の[F[節点文書]]を返します。

]FIG]

[89] 
簡単に言えば [CODE[iframe]] [[要素]]が含まれている[[文書]]を指しています。
[CODE[iframe]]
[[要素]]が[[影木]]に含まれる場合であっても、
[[影を含む根]]たる[[文書]]となります。

[HISTORY[
[83] 
かつては
[DFN[nested through]]
と呼ばれていました
[SRC[>>55, >>49]]。
[TIME[令和元(2019)年][2019]]の 
[CITE[HTML Standard]]
の改定で変更されました
[SRC[>>19]]。


- [55] [CITE@en-GB-x-hixie[HTML Standard]] ([TIME[2016-05-31 13:46:41 +09:00]]) <https://html.spec.whatwg.org/#browsing-context-nested-through>
]HISTORY]



[78] 
[[文書]][VAR[文書]]の[DFN[[F[[RUBYB[[[埋め込んでいる文書]]][embedding document]]]]]]は、
[VAR[文書]]の[F[閲覧文脈]]の[F[包含子文書]]です。
[SRC[>>77]]

;; [79] [[UIR]] でもこの語が使われています。

[80] 
[VAR[文書]]の[F[閲覧文脈]]がない場合の挙動は仕様書に明記されていません。
[[Does [VAR[settings]] prohibit mixed security contexts?]]
は[VAR[文書]]が[F[埋め込んでいる文書]]を持つか否かで分岐します。
[F[閲覧文脈]]が [CODE[null]] の場合、
[F[埋め込んでいる文書]]も [CODE[null]] と解するべきでしょう。

-*-*-

[90] 
関係して、
[[入れ子閲覧文脈]]の[[閲覧文脈]]との[[親子関係]]に、
[[子供閲覧文脈]]等があります。




* 処理

[62] [CODE(HTMLe)@en[[[iframe]]]] [[要素]]や [CODE(HTMLe)@en[frame][<frame>]]
[[要素]][VAR[要素]]が[[文書に挿入]]されたら、次のようにしなければ[MUST[なりません]] [SRC[>>51, >>20]]。
[FIG(steps)[
= [27] [[文書]]が[[閲覧文脈]]を持たなければ、停止します。
= [28] [VAR[要素]]の[F[入れ子閲覧文脈]]を、[[閲覧文脈の作成]]の結果に設定します。
= [50] [VAR[名前]]を、[VAR[要素]]の [CODE(HTMLa)@en[name][閲覧文脈名]] [[属性値]]に設定します。
= [29] [VAR[要素]]の[F[入れ子閲覧文脈]]の[F[閲覧文脈名]]を、
[VAR[名前]]が [CODE[null]] なら[[空文字列]]、それ以外なら[VAR[名前]]に設定します。
= [30] [[属性]]の処理を''初回''実行します。
]FIG]

;; [94] 
[CODE[name=""][<iframe name>]] [[属性値]]が[[閲覧文脈名]]に反映されるのは、
この[[閲覧文脈]]の作成の時点です。
その後の[[属性値]]の変更は反映されません。
(以前は反映される仕様でした。 [SEE[ [[<iframe name>]] ]])

[63] [CODE(HTMLe)@en[[[iframe]]]] [[要素]]や [CODE(HTMLe)@en[frame][<frame>]]
[[要素]][VAR[要素]]が[[文書から削除]]されたら、次のようにしなければ[MUST[なりません]] [SRC[>>51, >>20]]。
[FIG(steps)[
= [52] [VAR[要素]]の[F[入れ子閲覧文脈]]が [CODE[null]] でないなら、
== [53] [VAR[要素]]の[F[入れ子閲覧文脈]]について、[[閲覧文脈を捨てる]]処理を実行します。
== [54] [VAR[要素]]の[F[入れ子閲覧文脈]]を、 [CODE[null]] に設定します。
]FIG]

;; [64] [[文書のunload]]ではなく[[文書を捨てる]]が実行されます。

[21] [[属性]]の変更時には、次に示す[[属性]]の処理が呼び出されます。
[SEE[ [CODE(HTMLe)@en[[[iframe]]]], [CODE(HTMLe)@en[frame][<frame>]] ]]

[67] [DFN[[RUBYB[[[[CODE(HTMLe)@en[iframe]]属性の処理]]]@en[process the [CODE(HTMLe)@en[iframe][<iframe>]] attributes]]]]/[DFN[[RUBYB[[[[CODE(HTMLe)@en[frame][<frame>]]属性の処理]]]@en[process the [CODE(HTMLe)@en[frame][<frame>]] attributes]]]]は、
[VAR[要素]]について、
次のようにしなければ[MUST[なりません]] [SRC[>>51, >>20]]。

[FIG(steps)[
= 
[95] 
[VAR[要素]]の[F[入れ子閲覧文脈]]の[F[活性文書]]の [F[completely loaded]] 
が[[偽]]の場合、
== 
[96] 
[VAR[置換]]を、[[真]]に設定します。
= [97] 
それ以外で、[VAR[要素]]の[F[入れ子閲覧文脈]]の[F[セッション履歴]]が[[文書]]を1つだけ含み、
その[F[[[初期「[CODE(URI)@en[about:blank]]」文書]]である]]が[[真]]の場合、
== 
[98] 
[VAR[置換]]を、[[真]]に設定します。
= 
[99] 
それ以外の場合、
== 
[100] 
[VAR[置換]]を、[[偽]]に設定します。
= [37] [[要素]]が [CODE(HTMLe)@en[[[iframe]]]] で、
[[要素]]に [CODE(HTMLa)@en[[[srcdoc]]]] [[属性]]があれば、
== [31] 次の通り [[navigate]] します。
[FIG(list members)[
:[VAR[[[navigate]] する[[閲覧文脈]]]]:[[要素]]の[F[[[入れ子閲覧文脈]]]]
:[VAR[新しい[[資源]]]]:
[FIG(list members)[
[FIGCAPTION[
[32] [[応答]]
]FIGCAPTION]
:[F[[[URLリスト]]]]:([CODE(URI)@en[[[about:srcdoc]]]])
:[F[[[HTTPS状態]]]]: [[要素]]の[F[[[節点文書]]]]の[F[[[HTTPS状態]]]]
:[F[[[CSPリスト]]]]: [[要素]]の[F[[[節点文書]]]]の[F[[[CSPリスト]]]]の
[[clone][list clone]]
:[F[[[ヘッダーリスト]]]]:
[FIG(list members)[
:[CODE(HTTP)@en[[[Content-Type]]]]:[CODE(MIME)@en[[[text/html]]]]
]FIG]
:[F[[[本体]]]] ([[文字列]]):[[要素]]の [CODE(HTMLa)@en[[[srcdoc]]]] [[属性値]]
]FIG]
:[VAR[[[始点閲覧文脈]]]]:[[要素]]の[F[[[節点文書]]]]の[F[[[閲覧文脈]]]]
:[VAR[[[置換有効]]]]:[VAR[置換]]
:[VAR[[[[CODE(HTMLe)@en[iframe]] [CODE(HTMLa)@en[srcdoc]]文書]]]]:[[真]]
]FIG]
= [36] それ以外で、[[要素]]に [CODE(HTMLa)@en[[[src]]]] [[属性]]が無く、本処理が''初回''実行なら、
== [[タスク]]を[[タスクキュー]]に追加します。
[FIG(list members)[
[FIGCAPTION[
[[タスク]]
]FIGCAPTION]
:[[タスク源]]:[[DOM操作タスク源]]
:処理:
[FIG(steps)[
= [42] [[要素]]が [CODE(HTMLe)@en[[[iframe]]]] なら、
== [[iframe load event steps]] を実行します。
= それ以外なら、
== [[単純イベントを発火]]します。
[FIG(list members short)[
[FIGCAPTION[
[[単純イベント]]
]FIGCAPTION]
:[[イベント型]]:[CODE(DOMe)@en[[[load]]]]
:[[イベント対象]]:[[要素]]
]FIG]
]FIG]
]FIG]
= それ以外なら、
== [VAR[[[URL]]]] を、 [CODE(URI)@en[[[about:blank]]]] に設定します。
== [[要素]]に [CODE(HTMLa)@en[[[src]]]] [[属性]]があり、値が[[空文字列]]''以外''なら、
=== [[要素の基底URL]]に対して [CODE(HTMLa)@en[[[src]]]] [[属性値]]で [[URLの解決]]を行います。
=== 成功なら、 [VAR[[[URL]]]] を、解決した [[URL]] に設定します。
== [41] 
[[祖先閲覧文脈]]で[[活性文書]]の[[文書の番地]]と [VAR[[[URL]]]] が同じものがあるなら、ここで停止します。ただしここで [[URLの比較]]に当たり[[素片識別子]]は無視します。
== [[navigate]] します。
[FIG(list members)[
: [VAR[新しい[[資源]]]] :
[FIG(list members)[
: [F[要求]] :
[FIG(list members)[
[FIGCAPTION[
[58] [[要求]]
]FIGCAPTION]
: [F[URL]] : [VAR[[[URL]]]]
: [F[参照元ポリシー]] : 
[VAR[要素]]が [CODE(HTMLe)@en[iframe]] [[要素]]の場合、
[VAR[要素]]の [CODE(HTMLa)@en[referrerpolicy]] [[属性]]の状態
]FIG]
]FIG]
:[[navigate]] する[[閲覧文脈]]:[[要素]]の[[入れ子閲覧文脈]]:[[始点閲覧文脈]]:[[要素]]の[[節点文書]]の[[閲覧文脈]]
:[[置換有効]]:[VAR[置換]]
]FIG]
]FIG]


;; [23] [CODE(HTMLe)@en[[[frame]]]] [[要素]]の2回目以降の呼び出しで
[CODE(HTMLa)@en[[[src]]]] [[属性]]が指定されていない場合
(>>42) についてなぜか [[HTML Standard]] では規定がありません。

* 利用者インターフェイス

[26] [SEE[ [CODE(HTMLa)@en[sandbox]] ]]

[69] [[Webブラウザー]]によっては、[[フレーム]]を取り出して[[最上位閲覧文脈]]として表示する機能が[[メニュー]]にあります。

[70] とても便利なのに、ついてない [[Webブラウザー]]もあって困ったりします。

[71] [[Webページ]]によっては[[フレーム]]前提で [[JavaScript]]
などが作られていて、単独で正しく表示できないかもしれませんが。

[72] [CODE[sandbox]] で制限されている場合、
[[最上位閲覧文脈]]とすると制限が解除されて危険な場合もあります。
(が、そもそも [[Webアプリケーション]]として脆弱で好ましくない状態です。)

* セキュリティー

[22] [SEE[ [CODE[sandbox]]、[CODE[X-Frame-Options]]、[[クリックジャッキング]] ]]

* 法令との関係

** フレームによる無断埋め込み

[14] [CITE@ja[偽「松阪市公式HP」 | Okumura's Blog]] ([TIME[2009-02-11 09:36:10 +09:00]] 版) <http://oku.edu.mie-u.ac.jp/~okumura/blog/node/2354>

>単に本物の松阪市ホームページをフレームで表示しているだけ

>県警によれば「事件性はない」が,刑事事件にならないからといって,民事訴訟だってありうるし,いずれにしても善良な市民のすることではないので,真似しないこと。

新聞記事: <http://image.blog.livedoor.jp/info_matsusaka/imgs/0/3/0341de4b.JPG>

[15] >>14 単に[[警察]]が判断しただけで[[判例]]でもなんでもありませんが、
単に[[フレーム]]として埋め込んだという事実だけでは問題ないという判断が下されたことは興味深いです。

* 関連

[25] [[パケット]]としての[[フレーム][フレーム (ネットワーク)]] ([[WebSocketフレーム]]や[[HTTP/2フレーム]])
とは無関係です。

* 歴史

** フレームの誕生

[9] [[フレーム]]は [[Netscape Navigator 2.0]] が最初に実装しました。

[116] 
[CITE[Frames]], [TIME[2024-08-16T05:47:44.000Z]], [TIME[1997-06-13T23:34:00.174Z]] <http://web.archive.org/web/19970613233354/http://www1.netscape.com/comprod/products/navigator/version_2.0/frames/index.html>

[113] 
[CITE[Frames -An Introduction]], [TIME[2024-08-16T05:35:58.000Z]], [TIME[1997-06-13T21:35:20.866Z]] <http://web.archive.org/web/19970613213437/http://www1.netscape.com/assist/net_sites/frames.html>

[115] 
[CITE[Frame Basics]], [TIME[2024-08-16T05:44:05.000Z]], [TIME[1997-06-13T22:25:41.661Z]] <http://web.archive.org/web/19970613222244/http://www82.netscape.com/assist/net_sites/frame_syntax.html>

[114] 
[CITE[Frame Implementation Notes]], [TIME[2024-08-16T05:40:20.000Z]], [TIME[1997-06-13T22:24:44.889Z]] <http://web.archive.org/web/19970613222258/http://www82.netscape.com/assist/net_sites/frame_implement.html>


[121] [CITE[WWW-HTML Jul-Sep 1995: A proposal for addition to HTML 3.0: Frames]], [TIME[2024-08-16T13:47:38.000Z]], [TIME[1997-07-28T15:36:31.463Z]] <https://web.archive.org/web/19970728153627/http://www.eit.com/goodies/lists/www.lists/www-html.1995q3/0588.html>


[124] >>121

>
[PRE[
This document is designed to be viewed using <b>Netscape 1.2</b>'s
Frame features. If you are seeing this message, you are using
a frame <i>challenged</i> browser.
]PRE]

ほう、この時代には 2.0 でなく 1.2 になる予定だったのかあ。

[125] [CITE[Wayback Machine]], [TIME[2024-09-26T14:54:01.000Z]] <https://web.archive.org/web/19970728153627/http://www.eit.com/goodies/lists/www.lists/www-html.1995q3/0588.html>

[126] ところが >>121 は[TIME[1995-09-18]], >>125 は[TIME[1995-09-19]]。
>>125 には

>Netscape recently announced their new browsers, the Netscape Navigator 2.0
and Netscape Navigator Gold 2.0.[SNIP[]]

とある。2.0 が出ると発表されていたわけだ。

[127] ということは >>124 は古い社内情報が例文に残ったと考えるべきなのか、
それとも何かの typo なのか。



[FIG(data)[ [117] [[HTML要素概説]]

:[F[要素名]]:[CODE[frameset]]
:[F[要素名]]:[CODE[frame]]
:日付:[TIME[1995-09-18]]
:説明:
[TIME[1995]]頃、
[[Netscape Navigator 2.0]]
は、
[CODE[frameset]],
[CODE[frame]]
を実装した。
[SRC[FrameBasics]]
[TIME[1995-09-18]]、
[[Netscape Communications Corporation]]
は
[[www-html]]
に仕様案を投稿した。
[SRC[>>129]]
現行仕様である。
:出典:
[REFS[

-
[128] 
[DFN[FrameBasics]]:
[CITE[Frame Basics]], 
[DATA(.author)[[[Netscape Communications Corporation]]]],
[TIME[2024-08-16T05:44:05.000Z]], 
[TIME(.published)[1997-06-13T22:25:41.661Z]] <http://web.archive.org/web/19970613222244/http://www82.netscape.com/assist/net_sites/frame_syntax.html>
-
[129] 
[DFN[FramesProposal]]:
[CITE[A proposal for addition to HTML 3.0: Frames]], 
[DATA(.author)[[[Alex Edelstein]]]],
[TIME(.published)[Mon, 18 Sep 1995 23:02:29 -0700][1995-09-18T23:02:29-07:00]],
[TIME[2024-08-16T13:47:38.000Z]], [TIME[1997-07-28T15:36:31.463Z]] <https://web.archive.org/web/19970728153627/http://www.eit.com/goodies/lists/www.lists/www-html.1995q3/0588.html>



]REFS]

]FIG]


[FIG(data)[ [130] [[HTML要素概説]]

:[F[要素名]]:[CODE[frame]]
:参照:[CODE[iframe]]
:参照:[CODE[include]]

]FIG]

** NN3

[120] 
[CITE[Welcome to Netscape Navigator 3.0]], [TIME[2024-08-16T11:46:39.000Z]], [TIME[2002-06-30T20:10:08.695Z]] <https://web.archive.org/web/20020630200918/http://wp.netscape.com/eng/mozilla/3.0/relnotes/windows-3.0.html#Layout>


** HTML4

[133] 
[TIME[1996-07-10]]の
[[Cougar]] 
には

>[SNIP[]] The frame tags will probably be added
>        once we have an agreed definition for them.

とあって、[[フレーム]]機能は含まれないものの、追加すること自体は合意されていた模様。

[131] 
[TIME[1996-09-03]]付 [[Cougar]] [[DTD]] に[[フレーム]]機能が追加されているものの、
これは [[HTML ERB]]
の公式のものではなさそう。
[SEE[ [[Cougar]] ]]

[132] >>131 では
[[Netscape]]
の提案がほぼそのまま取り込まれていた。

[134] [[Cougar]] 時代に実際に[[フレーム]]が追加されたことは確認できない。

[140] [[フレーム]]のみの [[WD]] が[TIME[1997-03-31]]に公開されている。
[SRC[>>139]]

[119] 
この版ではほぼ [[Netscape]] の仕様がそのまま取り込まれているが、
[CODE[noframes]] が [CODE[body]] 内でも使えることになっているなど、
細部は違う。

[136] [CITE[HTML 4.0]] となった最初の [[WD]] には[[フレーム]]が追加されている。
[SRC[>>135]]

[137] その [[WD]] に付属する[TIME[1997-07-08]]版 [[DTD]] の先頭は
>>133
の文言が差し替わって

>        The frame tags have been added in acknowledgement of their
>        widespread deployment.

となっている。


[REFS[

- [139] 
[CITE[Implementing HTML Frames]], [TIME[2000-03-13T14:38:35.000Z]], [TIME[2024-11-03T08:46:19.047Z]] <https://www.w3.org/TR/WD-frames-970331>
- [135] 
[CITE[HTML 4.0 Working Draft Release]], [TIME[2017-10-02T10:48:08.000Z]], [TIME[2024-11-03T08:39:59.932Z]] <https://www.w3.org/TR/WD-html40-970708/>

]REFS]

[FIG(data)[ [118] [[HTML要素概説]]

:[F[要素名]]:[CODE[frameset]]
:[F[要素名]]:[CODE[frame]]
:[F[要素名]]:[CODE[noframes]]
:日付:[TIME[1996-07-10]]
:説明:
[TIME[1996-07-10]]版 [[Cougar]] [[DTD]] の注釈に、
[[フレーム]]の構想がある。
[SRC[HTML4-19960710]]

]FIG]


[FIG(data)[ [111] [[HTML要素概説]]

:[F[要素名]]:[CODE[frameset]]
:[F[要素名]]:[CODE[frame]]
:[F[要素名]]:[CODE[noframes]]
:[F[要素名]]:[CODE[iframe]]
:日付:[TIME[1997-03-31]]
:説明:
[TIME[1997-03-31]]版[[フレーム]]仕様[SEE[>>145]]に
[CODE[frameset]],
[CODE[frame]],
[CODE[iframe]],
[CODE[noframes]]
がある。
:出典:
[REFS[

-
[CITE[Implementing HTML Frames]], 
[DATA(.author)[[[W3C]]]],
[DATA(.status)[Working Draft]],
[TIME(.published)[31-Mar-97][1997-03-31]],
[TIME[2000-03-13T14:38:35.000Z]], [TIME[2024-08-16T06:42:47.708Z]] <https://www.w3.org/TR/WD-frames-970331>

]REFS]
:注釈:
- [145] 
後に [[HTML4]] に発展した。

]FIG]



-*-*-

[101] 
[[HTML4]] は [[HTML]] の[[フレーム]]機能を初めて[[標準化]]しました。

[104] 
一般的には [[HTML4]] は[[フレーム]]を好ましからざる機能の扱いにしたと認識されていますが、
実際はそう単純でもありません。

[105] 
[[HTML4]] には[[厳密DTD]]、[[移行用DTD]]、[[フレーム集合DTD]]の3つの [[DTD]]
(≒ 3つの[[適合水準]]) を用意していまいた。
このうち[[厳密DTD]]と[[移行用DTD]]の違いは[[非推奨]]の機能を含まないか含むかの違いです。

[106] 
[[フレーム集合DTD]]は、[[移行用DTD]]の[[フレーム]]機能を有効にする形で実装されていました。
つまり[[移行用DTD]]の機能をすべて含んだうえで、[[フレーム]]用のモードになっていました。

[107] 
組み合わせ上は、[[厳密DTD]]をベースに[[フレーム]]を有効にした [[DTD]]
も作れたはずですが、実際には提供されませんでした。

[108] 
それでは[[フレーム]]機能が[[移行用DTD]]固有の他の機能と同じように[[非推奨]]にされていたかといえば、
そうでもありません。[[フレーム集合DTD]]固有の[[要素]]は[[非推奨]]とされていません
[SRC[>>103]]。

[109] 
また、[[厳密DTD]]の説明には

>The HTML 4.01 Strict DTD includes all elements and attributes that have not been deprecated or do not appear in frameset documents.[SNIP[]]

とあり、[[非推奨]]の機能「または」[[フレーム集合]]文書に出現しない機能と敢えて並列に示されていて、
[[フレーム集合]]固有の[[要素]]が[[非推奨]]となっていないのがミスではなく意図的であることをうかがわせます。

;; [110] ところで、この引用文は本来は「フレーム集合でしか使わない要素以外を含む」
と書くべきなのに、「フレーム集合文書に出現しない要素を含む」と書いていて、
意味がおかしくなってしまっています。
実際は[[厳密DTD]]の[[要素]]は [CODE[body]]
を除きすべて[[フレーム集合DTD]]でも使えます。

[111] 
[CODE[iframe]] [[要素]]と [CODE[noframes]] [[要素]]は[[非推奨]]では''ない''にも関わらず、
[[移行用DTD]]と[[フレーム集合DTD]]では使えるのに[[厳密DTD]]では使えません。
このような性質の[[要素]]はこの2つだけです。

;; [112] 
索引では前者が「L」、後者が「F」となっています。[[凡例]]の説明が不十分ですが、
どちらも「L」であるべきです。
[SRC[>>103]]


[REFS[

- [102] 
[CITE@en[The global structure of an HTML document]], [TIME[2018-03-20T02:36:52.000Z]], [TIME[2024-08-11T07:28:10.003Z]] <https://www.w3.org/TR/html4/struct/global.html#version-info>
- [103] 
[CITE@en[Index of the HTML 4 Elements]], [TIME[2018-03-20T02:36:50.000Z]], [TIME[2024-08-11T07:28:21.742Z]] <https://www.w3.org/TR/html4/index/elements.html>

]REFS]



**

[8] 旧 [[HTML WG]] は [[XFrames]] を提案しましたが、受け入れられませんでした。



- [1] ''段組は愚かなのだろうか?'' <http://pc2.2ch.net/test/read.cgi/hp/1043588207/> 段組云々とかいいながら実際はフレームがテーマなわけだが。
- [2] >>1 用語が混乱しててわかりにくいよなあ

[3]
フレームの大きさを [CODE(HTMLa)[[[noresize]]]] で固定する奴、
あれが激しく使いづらいですよねぇ。
糞著者は自分と違った大きさの窓で読んでる人のことも考えて欲しい。 Scroll bar 消す奴も同罪。

これ、ブラウザ側に無効化機能がついていないのも不思議。
([[Mr.Anonymous]] [WEAK[2004-05-27 13:01:32 +00:00]])

[4]
HTML のフレームは presentation だけで
semantics がないという問題を抱えているので、
こんなのを考えてみた。

[PRE(XML)[
<frameset
  xmlns:docs="http://profile.example/">
  <frame rel="docs:contents"
    src="toc"/>
  <frame rel="docs:body"
    src="page1"/>
</frameset>
]PRE]

フレーム内の文書では、
[SAMP(XML)[<anchor href="page2" rel="next docs:body">Next</anchor>]]
とでもしておきます。

[SAMP(XMLa)[rel]] 属性は [[QName]] 並びで、リンクを辿る時には [CODE(HTMLa)[[[target]]]] 属性のように作用します。フレームの [CODE(XMLa)[rel]] 値と一致するものが見つかれば、そこに表示すると言う寸法。

([[Mr.Anonymous]] [WEAK[2004-05-27 13:09:08 +00:00]])

[5]
[SAMP(XMLa)[rel]] 属性の中に一つもフレームと一致するものがなければ、
現在の文書(群)とは関係のない文書へのリンクということで、 [SAMP(HTML)[[[_top]]]] なり [SAMP(HTML)[[[_blank]]]] なりで表示すれば OK (どちらにするかはスタイルシートで制御)。
([[Mr.Anonymous]] [WEAK[2004-05-27 13:11:57 +00:00]])

[6]
[CITE[frameは本当に便利か - 駄的HTML改善計画]] <http://car.s35.xrea.com/better/frame.php>

[10]
[CITE[Frames]] ([CODE[2007-02-28 00:19:09 +09:00]] 版) <http://web.archive.org/web/19970613221220/www82.netscape.com/comprod/products/navigator/version_2.0/frames/index.html>
([[名無しさん]])


[11]
>>10 みてもやっぱり、アイディアはよかったと思うんだけどね。。。
([[名無しさん]] [WEAK[2007-02-27 15:34:11 +00:00]])

[12] [CITE@en[MAMA: Frames - Opera Developer Community]] ([TIME[2008-11-25 20:37:51 +09:00]] 版) <http://dev.opera.com/articles/view/mama-frames/>

[13] しかし [[CSS]] を使ったいわゆる[[擬似フレーム]]は、結構メジャーになったとはいえ、
いまいちなんか微妙なんですよねー。


[122] 
[CITE[Terra Informatica Software, Inc.]], [TIME[2024-08-17T09:37:55.000Z]], [TIME[2011-01-01T08:17:50.894Z]] <https://web.archive.org/web/20110101081723/http://www.terrainformatica.com/htmlayout/logfile.whtm>


** HTML5

[16] [CITE[HTML5: Frames — Anne’s Weblog]] ([TIME[2009-02-17 10:44:00 +09:00]] 版) <http://annevankesteren.nl/2009/02/html5-frames>



[17] 
[TIME[2009年][year:2009]]になってようやく初めて、
[[フレーム]]の[[レンダリング][レンダリング (Web)]]が [[HTML5]]
[[仕様書]]で正確に定義されました。

;; [CITE@en[(X)HTML5 Tracking]] ([TIME[2009-07-26 19:00:30 +09:00]] 版) <http://html5.org/tools/web-apps-tracker?from=2758&to=2759>

[18] [CITE@en[(X)HTML5 Tracking]]
([TIME[2009-08-22 21:14:18 +09:00]] 版)
<http://html5.org/tools/web-apps-tracker?from=2758&to=2759>

[19] [CITE@en[Web Applications 1.0 r8518     Be more explicit about viewport rendering sizes (rendered and not)]]
( ([TIME[2014-03-01 09:11:00 +09:00]] 版))
<http://html5.org/tools/web-apps-tracker?from=8517&to=8518>

[33] [CITE@en[Add 'HTTPS state' to settings objects · whatwg/html@6de5241]] ([TIME[2015-09-29 23:41:32 +09:00]] 版) <https://github.com/whatwg/html/commit/6de524157fcf341e10efb3eec634bcf7325e6ee4>

[34] [CITE@en[Add and populate global object's "CSP list" · whatwg/html@479dfbf]] ([TIME[2015-11-06 23:05:57 +09:00]] 版) <https://github.com/whatwg/html/commit/479dfbf1ff68b746ed3f81cc7415165e3342709e>

[35] [CITE@en[Move 'HTTPS state' from Window to Document · whatwg/html@68390ce]] ([TIME[2015-11-06 23:23:56 +09:00]] 版) <https://github.com/whatwg/html/commit/68390cea99f9f19881a16e1c8adaf1b130b4d1cc>

[38] [CITE@en[Remove <iframe seamless> · whatwg/html@1490eba]]
([TIME[2016-02-04 19:25:00 +09:00]] 版)
<https://github.com/whatwg/html/commit/1490eba4dba5ab476f0981443a86c01acae01311>

[39] [CITE@en[URLs are parsed and produce records · whatwg/html@30bc255]]
([TIME[2016-02-14 23:07:40 +09:00]] 版)
<https://github.com/whatwg/html/commit/30bc2557105ad62881ec9670f253febbc9761b44>

[40] [CITE@en[Add recursion check to frame elements · whatwg/html@edb786b]]
([TIME[2016-03-23 21:27:57 +09:00]] 版)
<https://github.com/whatwg/html/commit/edb786b16cf5690fe9211fb28fb29cded2249dc1>

[43] [CITE@en[Regression fix: define source browsing context for iframe and frame]]
( ([[annevk]]著, [TIME[2016-05-03 23:24:09 +09:00]]))
<https://github.com/whatwg/html/commit/a714902e66d4d9d967d7e3e7505c6fdfb365015d>

[48] [CITE@en[Integrate with the Referrer Policy spec, part 2 of n]]
( ([[domenic]]著, [TIME[2016-05-18 01:52:35 +09:00]]))
<https://github.com/whatwg/html/commit/176e74243c649b709b9959b7d08b327290c2f403>

[49] [CITE@en[Be more precise about nested and discarded browsing contexts]]
([[domenic]]著, [TIME[2016-07-20 22:58:49 +09:00]])
<https://github.com/whatwg/html/commit/39118df640ad4a3f03f164fb5ffe0a56316297be>


[56] [CITE@en[Set referrer policy better for <iframe srcdoc> documents]]
([[domenic]]著, [TIME[2016-08-12 06:23:46 +09:00]])
<https://github.com/whatwg/html/commit/5d7c532fc9aa275bd3b12d469b9841c0bad4f50d>

[57] [CITE@en[Integrate referrerpolicy for a, area, iframe, and link elements]]
([[estark37]]著, [TIME[2016-08-12 06:42:26 +09:00]])
<https://github.com/whatwg/html/commit/2e955e66ae7f815efe09ccac6445cfbdcbf643ab>

[59] [CITE@en[Honor srcdoc document referrer policies when set]]
([[estark37]]著, [TIME[2016-11-24 05:58:33 +09:00]])
<https://github.com/whatwg/html/commit/3147414111d134ecd844d9796aa6fc7c1979c98b>

[60] [CITE@en[Regression fix: run iframe load event steps immediately]]
([[annevk]]著, [TIME[2018-01-16 19:23:55 +09:00]])
<https://github.com/whatwg/html/commit/3784c5375a36e19373982984ff761b491125a5da>

[61] [CITE@en[Make <frame> fire load synchronously with "completely loaded"]]
([[annevk]]著, [TIME[2018-02-22 20:11:33 +09:00]])
<https://github.com/whatwg/html/commit/16de123059bd4b3660677fb4fdc03e2053815482>

[65] [CITE@en[frame and iframe have different load-event-firing behaviors · Issue #3492 · whatwg/html]]
([TIME[2018-02-24 19:33:40 +09:00]])
<https://github.com/whatwg/html/issues/3492>

[66] [CITE@en[Make <frame> fire load synchronously with "completely loaded" by annevk · Pull Request #3495 · whatwg/html]]
([TIME[2018-02-24 19:33:56 +09:00]])
<https://github.com/whatwg/html/pull/3495>

[73] [CITE@en[Clone <iframe srcdoc>'s node document's CSP list]]
([[annevk]]著, [TIME[2018-10-12 16:32:38 +09:00]])
<https://github.com/whatwg/html/commit/ebf6d404858bd3d75ec29b4899866935a74c6dc6>

[74] [CITE@en[What does it mean to alias a policy from a CSP list? · Issue #207 · w3c/webappsec-csp]]
([TIME[2018-11-06 16:21:11 +09:00]])
<https://github.com/w3c/webappsec-csp/issues/207>

[75] [CITE@en[Is srcdoc aliasing its parent's CSP or copying it? · Issue #2594 · whatwg/html]]
([TIME[2018-11-06 16:21:50 +09:00]])
<https://github.com/whatwg/html/issues/2594>

[76] [CITE@en[Clone <iframe srcdoc>'s node document's CSP list by annevk · Pull Request #4083 · whatwg/html]]
([TIME[2018-11-06 16:22:36 +09:00]])
<https://github.com/whatwg/html/pull/4083>

[81] [CITE@en[Give browsing context an explicit container]]
([[annevk]], [TIME[2019-11-22 17:11:31 +09:00]], [TIME[2022-01-13T09:06:04.000Z]])
<https://github.com/whatwg/html/commit/7b4964ad0a953b05738afc66600fa47a4dc8045d>

[91] [CITE@en["nested through" usage is wrong · Issue #4409 · whatwg/html]]
([TIME[2022-01-13T10:27:08.000Z]])
<https://github.com/whatwg/html/issues/4409>

[92] [CITE@en[Give browsing contexts an explicit container by annevk · Pull Request #5091 · whatwg/html]]
([TIME[2022-01-13T10:29:42.000Z]])
<https://github.com/whatwg/html/pull/5091>

[93] [CITE@en[Editorial: nested browsing context is a member, not a type]]
([[annevk]], [TIME[2019-11-27 02:46:03 +09:00]], [TIME[2022-01-18T08:55:21.000Z]])
<https://github.com/whatwg/html/commit/6b737bbc428facf34ec3728c0912cf9e172d0ea4>

[123] [CITE@en['''['''e''']''' (0) Use '''['''Supplemental''']''' instead of '''['''XXX''']''', in preparation for WebID…]]
([[Hixie]], [TIME[2009-06-24 20:55:54 +09:00]], [TIME[2024-09-06T08:23:40.000Z]])
<https://github.com/whatwg/html/commit/20b3eed1434792acab04f71c72b1fa849e47a616#diff-41cf6794ba4200b839c53531555f0f3998df4cbb01a4d5cb0b94e3ca5e23947d>