frame

frame 要素 (HTML)

[9] HTMLframe 要素は、 (フレーム) (frame) の内容と見た目を定義します。

代替

[5] 現在では iframe 要素を使うのが普通です。

仕様書

[12]

開始タグ
必須
終了タグ
禁止 (HTML 4), 必須 (XHTML 1)
出現できる文脈
frameset の子供として任意個
内容模型
空 (強制空要素)
属性
属性名属性値既定値説明状態出典
allowcrossdomainxhr非標準Air
applicationon | off非標準HTA
bordercolor%Color境界線色非標準
class(なし)[HTML 4] %coreattrs
datafldデータ欄非標準
datasrc%URI(なし)データ源非標準
documentroot非標準Air
frameborder1 | 01枠境界線[HTML 4] 枠
framespacing枠間隔非標準
idID(なし)固有識別子[HTML 4] %coreattrs
longdesc%URI(なし)長い説明の参照[HTML 4] 枠
marginheight%Pixels余白高さ[HTML 4] 枠
marginwidth%Pixels余白幅[HTML 4] 枠
name(なし)枠名[HTML 4] 枠
noresize(真偽値属性)()寸法可変性[HTML 4] 枠
ondominitialize非標準Air
sandboxroot非標準Air
scrollingauto[HTML 4] 枠
security安全上の扱い非標準WinIE
src%URI(なし)枠内容[HTML 4] 枠
style(なし)スタイル指定[HTML 4] %coreattrs
title%Text(なし)注釈的題[HTML 4] %coreattrs
xmlnshttp://www.w3.org/1999/xhtml 固定W3C 勧告XHTML m12n

フレーム内容

[14] フレームの内容を直接画像とすることは望ましくありません。 (非視覚 UA 向けに) 画像の説明を記述できなくなってしまうからです。 HTML 4 16.4.2

例えば、

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN"
   "http://www.w3.org/TR/html4/frameset.dtd">
<HTML>
<HEAD>
<TITLE>A poorly-designed frameset document</TITLE>
</HEAD>
<FRAMESET cols="20%, 80%">
   <FRAME src="table_of_contents.html">
   <FRAME src="ostrich.gif" longdesc="ostrich-desc.html">
</FRAMESET>
</HTML>

のような場合、確かに longdesc 属性を使うことはできますが、 longdesc は本来フレームの初期内容ではなくフレーム自体を説明するべきものです。

リンクによって他の画像に替えられると、その画像の説明はなくなってしまいます。

[15] という HTML 4 仕様書にある >>14 の考え方は適当ではないと言う人もいます。 曰く、画像が非視覚 UA で表示できないのは代替文を埋め込めない画像形式や画像を表示できない UA の限界で、ありとあらゆる状況で内容を得ることができるようにするのは無理なことです。

また、フレームを使わない場合でも a を使って画像にリンクすることがありますが、 それも好ましくないと言うのでなければ一貫しません。 そのようなリンクを行うときには、必要で可能であればリンク元に画像の説明があるはずです。 フレーム内であってもそれは同じことでしょう。

また、あるフレームに表示される画像が有限なら、 longdesc 文書にすべての代替文を記述しておくのも一つの方法です。

[16] HTML 4 仕様書は、 回避策として画像を埋め込んだだけのダミー文書を用意することを勧めていますけど、 無駄なだけですよね。

状態

[22] 要素閲覧文脈包含子としての状態を持ちます。

[3] 文書中にある frame 要素を、 活性frame要素 (active frame element) といいます >>51

処理

[8] 著者frame 要素を使ってはなりませんが、 利用者エージェントframe 要素を実装しなければなりません。

[2] フレームを参照。

[65] frame 要素要素属性に関する属性変更手順群は、新しい値を次のようにしなければなりません >>51

  1. [24] 要素入れ子閲覧文脈null 以外なら、
    1. [25] 属性src 属性なら、
      1. [26] 要素についてframe属性の処理を行います。
    2. [27] 属性name 属性なら、
      1. [28] 要素入れ子閲覧文脈閲覧文脈名を、 新しい値null なら空文字列、それ以外なら新しい値に設定します。

HTMLFrameElement インターフェイス

[6] frame 要素要素インターフェイスは、 HTMLFrameElement インターフェイスです。

[7] HTMLFrameElement インターフェイスには、 次のメンバーがあります。

歴史

[4] Netscape Navigator 2.0 で導入されました。

HTML4

[19] Internet Explorer Linked Pages Are Being Cached in Frame Set ( ( 版)) http://support.microsoft.com/kb/233528/en-us

[20] IE5のお気に入りにクリビツ! ( ( 版)) http://www.tohoho-web.com/lng/199904/99040069.htm

frame 要素 (XFrames)

[17] XFrames ( 版) http://www.w3.org/TR/2010/NOTE-xframes-20101216/#s_frame-element

[18] HTML とは違って、 URLsrc 属性ではなく、 source 属性に指定します。

HTML5

[21] Web Applications 1.0 r8380 Update <frame> requirements to match legacy better ( ( 版)) http://html5.org/tools/web-apps-tracker?from=8379&to=8380

他との関係

[11] HTML には、特定実装の拡張で、同名別用法の frame 要素型が存在します (>>8)。

[13] フレームの見た目を指定した例 HTML 4 16.2.2.2

<!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 cols="33%,33%,33%">
  <FRAMESET rows="*,200">
      <FRAME src="contents_of_frame1.html" scrolling="no">
      <FRAME src="contents_of_frame2.gif" 
                marginwidth="10" marginheight="15"
                noresize>
  </FRAMESET>
  <FRAME src="contents_of_frame3.html" frameborder="0">
  <FRAME src="contents_of_frame4.html" frameborder="0">
</FRAMESET>
</HTML>

この例では、フレーム1は scroll できなくなります。 フレーム2は画像の周りに余白が付きますし、 大きさを変えることができなくなります。

フレーム3とフレーム4の間には境界線をつけません。 フレーム1とフレーム2とフレーム3の間の境界線は付きます。 (フレーム2とフレーム3の間に境界線が引かれることに注意。)

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

[29] Editorial: Cross-reference DOM "child" where appropriate in rendering (zcorpan著, ) https://github.com/whatwg/html/commit/e8c91c05edc8d6cdb33fdd5452e052359d40490b

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

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

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