declare

declare

object 要素 declare 属性 (HTML, XHTML 1)

[1] HTMLobject 要素の declare 属性は、 その object が宣言のみであることを示します。

物体は、この宣言を参照する後の object で実現値化しなければなりません。

状態
W3C 勧告
名前空間URI
(null名前空間)
局所名
declare (declare (宣言) より)
属性型
(真偽値属性)
既定値
()

[4] object 宣言を使うと、

[2] 仕様書:

実装仕様:

属性値

[3] この属性は真偽値属性です。 指定すれば (宣言のみである)、 省略すれば (宣言のみではない) になります。

機能

[6] declareobject は、 UA が読んだときに実行はされません。 後から実現値化されて実行されます。

実現値化は、その object を参照する要素をレンダリングする必要のある度に (その object を参照する連結object などが活性化される度に) 行われます。 [HTML 4]

[5] declare に対応していない UA は、 object の内容をレンダリングしなければなりません [HTML 4]

[11] HTML 4 DTD の注釈 (参考) には declare but don't instantiate flag と書かれています。

関連

[10] フォームの提出との関係 declareobject は、 フォーム提出に際して成功とは見なさないべきです。 HTML 4 17.13.2

[7] 識別子 後から object を識別するために、 id 属性が必要です。 HTML 4

[13] 参照するものとの位置関係 declareobject はその object の最初の実現値より前になければなりません。 HTML 4

[8] 連結によって実現値化する例

<P><OBJECT declare
        id="EARTH.DECLARATION" 
        data="TheEarth.mpeg" 
        type="video/mpeg">
   The <STRONG>Earth</STRONG> as seen from space.
</OBJECT>
...later in the document...
<P>A neat <A href="#EARTH.DECLARATION">animation of The Earth!</A>

(HTML 4 仕様書より、改)

この例では、 animation of The Earth! というリンクによって地球の動画を活性化することができます。

[9] 物体の実行時引数として引き渡す例:

<P><OBJECT declare
     id="TRIBUNE"
     type="application/x-webfont"
     data="tribune.png">
</OBJECT>
...view the poem in KublaKhan.txt here...
<P><OBJECT classid="http://foo.bar.example/poem_viewer" 
           data="KublaKhan.txt">
<PARAM name="font" valuetype="object" value="#TRIBUNE">
<P>Read <A href="KublaKhan.txt">KublaKhan</A>!
</OBJECT>

(HTML 4 仕様書より、改)

(この例では value 属性に URI参照のような値が使われています。 しかし、 HTML 4 の valuetype 属性の規定を読む限りでは、 IDREF のように TRIBUNE とだけ指定しなければならないはずです。)

歴史

[14] object 要素型がまだ insert と呼ばれていた当初の仕様案では、 alias 要素型が定義されていました。この要素型要素は、 insert と似ていますが、 実際に文書中に物体挿入はせず、 param から参照して使用することとしていました。 param 要素から物体を参照するための方法として用意されたようです。

[15] その後 insert から object要素型名が変更された際に、 alias も統合されて、 declare 真偽値属性が設けられました。機能的には前案 >>14 と同じで、 param から 物体を参照するためのものだったようです。

[16] 更に、 URI が指定できる場所に物体を指定するためという用法が追加されます。

a 要素href 属性declare された object を指す同文書参照とすると、 その物体へのリンクとなります。 (活性化すると現在の HTML 文書の代わりに宣言された物体Webブラウザ画面に表示されます。)

body 要素background 属性に同様に指定すると、背景がその物体になります。 高度なアニメーション背景にしたい時などに使えるのだそうです。 (この記述は3月25日案で消滅しています。)

[17] その後ほぼそのままの内容の仕様案が続きましたが、 1997年7月の HTML 4 仕様案に取り込まれるにあたって全体的に書きなおされました。

この時に、2つ目のリンク先を物体にするという用途について、 現在の頁の代わりにという記述はなくなっています。 しかも、

<OBJECT declare
           id="earth_declaration" 
           data="TheEarth.mpeg" 
           type="application/mpeg">
  <OBJECT src="TheEarth.gif">
   The <STRONG>Earth</STRONG> as seen from space.
  </OBJECT>
</OBJECT>
...later in the document...
Click to see a neat <A href="#earth_declaration">
animation of The Earth!</A>

のような使用例がある位ですから、 現在のページの代わりにという仕様から、 宣言された場所に、と変更されたようです。

もっとも、以前の案から、 未対応で代替内容レンダリングされる時にリンク活性化したらどうなるのかは明らかではありませんでしたが。
ただ、この例の代替内容としての object は次の案で削除されて、 >>8 のようになっています。 <http://www.w3.org/TR/WD-html40-970917/struct/objects.html#h-14.2.4>

リンク活性化の前後で][レンダリング]]がどう変化するべきなのかがよくわからない、 実装不能な仕様になってしまいました。仕様案のこの部分は、 HTML 4.01 勧告までほとんど変わっていません。

[18] WinIEGecko をはじめ、 HTML 4 以後の各種 Webブラウザは、 DOM 属性としての declare には対応していますが、 HTML 4 で規定された declare の機能は実装していません。 (WinIE については MSDNGecko については >>12 を参照。)

[19] Ian Hickson は2005年9月に、 HTML 5 には declare 属性を含めないつもりであると述べています (>>12)。

[20] デスクトップ環境の視覚ブラウザで無視されてきた declare 属性ですが、 NTTドコモiモード対応HTML では、 Version 3.0 (2001年) で object 要素型が追加されると同時に declare 属性が追加されています。

iモードにおける declare 属性は、旧仕様案の2つ目の用法 (>>16) と同じで、 iアプリなどの携帯電話端末上で動作するプログラムを、 現在の文書に埋め込むのではなく、それだけで表示させるための a 要素リンク先として使われます。

ただし、 HTML 4 の例とは異なり、 href 属性ではなく ijam 属性などの媒体型に応じた属性で指定します。 未対応の利用者エージェント華麗にスルーできるようにそうなっていると思われます。

現実の使用例では、 object 要素head 内に入っていたり body 内におかれたりしますが、いずれも空要素とするようです。

実装

[12] Bug 164979 - Implement declare attribute for object tag <https://bugzilla.mozilla.org/show_bug.cgi?id=164979>

メモ

メモ