フレーム

フレーム (Web ページ)

[24] フレーム (frame) は、文書中に他の文書を埋め込むものです。 フレームを表す閲覧文脈を、入れ子閲覧文脈といいます。

仕様書

言語

[7] フレームに関連する次の要素があります。

[68] フレーム要素

[47] このうち「★」が閲覧文脈包含子となり得るものです。

閲覧文脈包含子

[45] 入れ子閲覧文脈の「」に当たるものを、 閲覧文脈包含子 (browsing context container) >>44 といいます。 フレームを作る要素に当たります。

[46] 閲覧文脈包含子は、次の状態を持ちます。

入れ子閲覧文脈
内容文書

処理

[62] iframe 要素frame 要素要素文書に挿入されたら、次のようにしなければなりません >>51, >>20

  1. [27] 文書閲覧文脈を持たなければ、停止します。
  2. [28] 要素入れ子閲覧文脈を、閲覧文脈の作成の結果に設定します。
  3. [50] 名前を、要素name 属性値に設定します。
  4. [29] 要素入れ子閲覧文脈閲覧文脈名を、 名前null なら空文字列、それ以外なら名前に設定します。
  5. [30] 属性の処理を初回実行します。

[63] iframe 要素frame 要素要素文書から削除されたら、次のようにしなければなりません >>51, >>20

  1. [52] 要素入れ子閲覧文脈null でないなら、
    1. [53] 要素入れ子閲覧文脈について、閲覧文脈を捨てる処理を実行します。
    2. [54] 要素入れ子閲覧文脈を、 null に設定します。

[64] 文書のunloadではなく文書を捨てるが実行されます。

[21] 属性の変更時には、次に示す属性の処理が呼び出されます。 iframe, frame

[67] iframe属性の処理 (process the iframe attributes) /frame属性の処理 (process the frame attributes) は、 次のようにしなければなりません >>51, >>20

  1. 要素入れ子閲覧文脈活性文書completely loaded が設定されていないなら、
    1. 置換を、とします。
  2. それ以外で、要素入れ子閲覧文脈セッション履歴文書を1つだけ含み、 それが初期「about:blank」文書なら、
    1. 置換を、とします。
  3. それ以外なら、
    1. 置換を、とします。
  4. [37] 要素iframe で、 要素srcdoc 属性があれば、
    1. [31] 次の通り navigate します。
      navigate する閲覧文脈
      要素入れ子閲覧文脈
      新しい資源
      [32] 応答
      URLリスト
      (about:srcdoc)
      HTTPS状態
      要素節点文書HTTPS状態
      CSPリスト
      要素節点文書CSPリストclone
      ヘッダーリスト
      Content-Type
      text/html
      本体 (文字列)
      要素srcdoc 属性値
      始点閲覧文脈
      要素節点文書閲覧文脈
      置換有効
      置換
      iframe srcdoc文書
  5. [36] それ以外で、要素src 属性が無く、本処理が初回実行なら、
    1. タスクタスクキューに追加します。
      タスク
      タスク源
      DOM操作タスク源
      処理
      1. [42] 要素iframe なら、
        1. iframe load event steps を実行します。
      2. それ以外なら、
        1. 単純イベントを発火します。
          単純イベント
          イベント型
          load
          イベント対象
          要素
  6. それ以外なら、
    1. URL を、 about:blank に設定します。
    2. 要素src 属性があり、値が空文字列以外なら、
      1. 要素の基底URLに対して src 属性値URLの解決を行います。
      2. 成功なら、 URL を、解決した URL に設定します。
    3. [41] 祖先閲覧文脈活性文書文書の番地URL が同じものがあるなら、ここで停止します。ただしここで URLの比較に当たり素片識別子は無視します。
    4. navigate します。
      新しい資源
      要求
      [58] 要求
      URL
      URL
      参照元ポリシー
      要素iframe 要素の場合、 要素referrerpolicy 属性の状態
      navigate する閲覧文脈
      要素入れ子閲覧文脈:始点閲覧文脈:要素節点文書閲覧文脈
      置換有効
      置換
[23] frame 要素の2回目以降の呼び出しで src 属性が指定されていない場合 (>>42) についてなぜか HTML Standard では規定がありません。

利用者インターフェイス

[26] sandbox

[69] Webブラウザーによっては、フレームを取り出して最上位閲覧文脈として表示する機能がメニューにあります。

[70] とても便利なのに、ついてない Webブラウザーもあって困ったりします。

[71] Webページによってはフレーム前提で JavaScript などが作られていて、単独で正しく表示できないかもしれませんが。

[72] sandbox で制限されている場合、 最上位閲覧文脈とすると制限が解除されて危険な場合もあります。 (が、そもそも Webアプリケーションとして脆弱で好ましくない状態です。)

セキュリティー

[22] sandboxX-Frame-Optionsクリックジャッキング

法令との関係

フレームによる無断埋め込み

[14] 偽「松阪市公式HP」 | Okumura's Blog ( 版) 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 が最初に実装しました。

[8]HTML WGXFrames を提案しましたが、受け入れられませんでした。

[3] フレームの大きさを noresize で固定する奴、 あれが激しく使いづらいですよねぇ。 糞著者は自分と違った大きさの窓で読んでる人のことも考えて欲しい。 Scroll bar 消す奴も同罪。

これ、ブラウザ側に無効化機能がついていないのも不思議。 (Mr.Anonymous 2004-05-27 13:01:32 +00:00)

[4] HTML のフレームは presentation だけで semantics がないという問題を抱えているので、 こんなのを考えてみた。

<frameset
  xmlns:docs="http://profile.example/">
  <frame rel="docs:contents"
    src="toc"/>
  <frame rel="docs:body"
    src="page1"/>
</frameset>

フレーム内の文書では、 <anchor href="page2" rel="next docs:body">Next</anchor> とでもしておきます。

rel 属性は QName 並びで、リンクを辿る時には target 属性のように作用します。フレームの rel 値と一致するものが見つかれば、そこに表示すると言う寸法。

(Mr.Anonymous 2004-05-27 13:09:08 +00:00)

[5] rel 属性の中に一つもフレームと一致するものがなければ、 現在の文書(群)とは関係のない文書へのリンクということで、 _top なり _blank なりで表示すれば OK (どちらにするかはスタイルシートで制御)。 (Mr.Anonymous 2004-05-27 13:11:57 +00:00)

[6] frameは本当に便利か - 駄的HTML改善計画 http://car.s35.xrea.com/better/frame.php

[10] Frames (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 みてもやっぱり、アイディアはよかったと思うんだけどね。。。 (名無しさん 2007-02-27 15:34:11 +00:00)

[12] MAMA: Frames - Opera Developer Community ( 版) http://dev.opera.com/articles/view/mama-frames/

[13] しかし CSS を使ったいわゆる擬似フレームは、結構メジャーになったとはいえ、 いまいちなんか微妙なんですよねー。

[16] HTML5: Frames — Anne’s Weblog ( 版) http://annevankesteren.nl/2009/02/html5-frames

[17] になってようやく初めて、 フレームレンダリングHTML5 仕様書で正確に定義されました。

[18] (X)HTML5 Tracking ( 版) http://html5.org/tools/web-apps-tracker?from=2758&to=2759

[19] Web Applications 1.0 r8518 Be more explicit about viewport rendering sizes (rendered and not) ( ( 版)) http://html5.org/tools/web-apps-tracker?from=8517&to=8518

[33] Add 'HTTPS state' to settings objects · whatwg/html@6de5241 ( 版) https://github.com/whatwg/html/commit/6de524157fcf341e10efb3eec634bcf7325e6ee4

[34] Add and populate global object's "CSP list" · whatwg/html@479dfbf ( 版) https://github.com/whatwg/html/commit/479dfbf1ff68b746ed3f81cc7415165e3342709e

[35] Move 'HTTPS state' from Window to Document · whatwg/html@68390ce ( 版) https://github.com/whatwg/html/commit/68390cea99f9f19881a16e1c8adaf1b130b4d1cc

[38] Remove <iframe seamless> · whatwg/html@1490eba ( 版) https://github.com/whatwg/html/commit/1490eba4dba5ab476f0981443a86c01acae01311

[39] URLs are parsed and produce records · whatwg/html@30bc255 ( 版) https://github.com/whatwg/html/commit/30bc2557105ad62881ec9670f253febbc9761b44

[40] Add recursion check to frame elements · whatwg/html@edb786b ( 版) https://github.com/whatwg/html/commit/edb786b16cf5690fe9211fb28fb29cded2249dc1

[43] Regression fix: define source browsing context for iframe and frame ( (annevk著, )) https://github.com/whatwg/html/commit/a714902e66d4d9d967d7e3e7505c6fdfb365015d

[48] Integrate with the Referrer Policy spec, part 2 of n ( (domenic著, )) https://github.com/whatwg/html/commit/176e74243c649b709b9959b7d08b327290c2f403

[49] Be more precise about nested and discarded browsing contexts (domenic著, ) https://github.com/whatwg/html/commit/39118df640ad4a3f03f164fb5ffe0a56316297be

[55] Be more precise about nested and discarded browsing contexts (domenic著, ) https://github.com/whatwg/html/commit/39118df640ad4a3f03f164fb5ffe0a56316297be

[56] Set referrer policy better for <iframe srcdoc> documents (domenic著, ) https://github.com/whatwg/html/commit/5d7c532fc9aa275bd3b12d469b9841c0bad4f50d

[57] Integrate referrerpolicy for a, area, iframe, and link elements (estark37著, ) https://github.com/whatwg/html/commit/2e955e66ae7f815efe09ccac6445cfbdcbf643ab

[59] Honor srcdoc document referrer policies when set (estark37著, ) https://github.com/whatwg/html/commit/3147414111d134ecd844d9796aa6fc7c1979c98b

[60] Regression fix: run iframe load event steps immediately (annevk著, ) https://github.com/whatwg/html/commit/3784c5375a36e19373982984ff761b491125a5da

[61] Make <frame> fire load synchronously with "completely loaded" (annevk著, ) https://github.com/whatwg/html/commit/16de123059bd4b3660677fb4fdc03e2053815482

[65] frame and iframe have different load-event-firing behaviors · Issue #3492 · whatwg/html () https://github.com/whatwg/html/issues/3492

[66] Make <frame> fire load synchronously with "completely loaded" by annevk · Pull Request #3495 · whatwg/html () https://github.com/whatwg/html/pull/3495

[73] Clone <iframe srcdoc>'s node document's CSP list (annevk著, ) https://github.com/whatwg/html/commit/ebf6d404858bd3d75ec29b4899866935a74c6dc6

[74] What does it mean to alias a policy from a CSP list? · Issue #207 · w3c/webappsec-csp () https://github.com/w3c/webappsec-csp/issues/207

[75] Is srcdoc aliasing its parent's CSP or copying it? · Issue #2594 · whatwg/html () https://github.com/whatwg/html/issues/2594

[76] Clone <iframe srcdoc>'s node document's CSP list by annevk · Pull Request #4083 · whatwg/html () https://github.com/whatwg/html/pull/4083