[[#comment]]
** 属性値
[3] この属性は[[真偽値属性]]です。
指定すれば[[真]] (宣言のみである)、
省略すれば[[偽]] (宣言のみではない)
になります。
[[#comment]]
** 機能
[6] [CODE(HTMLa)[declare]] な [CODE(HTMLe)[object]]
は、 UA が読んだときに実行はされません。
後から実現値化されて実行されます。
実現値化は、その [CODE(HTMLe)[object]] を参照する要素をレンダリングする必要のある度に
(その [CODE(HTMLe)[object]] を参照する[[連結]]や [CODE(HTMLe)[object]]
などが[[活性化]]される度に) 行われます。 [SUP[ [HTML 4] ]]
[5] [CODE(HTMLa)[declare]] に対応していない UA
は、 [CODE(HTMLe)[object]] の内容をレンダリングしなければなりません
[SUP[ [HTML 4] ]]。
[11]
HTML 4 DTD の[[注釈]] (参考) には
[Q[declare but don't instantiate flag]]
と書かれています。
[[#comment]]
** 関連
[10] '''フォームの提出との関係'''
[CODE(HTMLa)@en[[[declare]]]] な [CODE(HTMLe)@en[[[object]]]] は、
[[フォーム]]の[[提出]]に際して[[成功]]とは見なさないべきです。
[SRC@en[HTML 4 17.13.2]]
[7] '''識別子'''
後から [CODE(HTMLe)[object]] を識別するために、
[CODE(HTMLa)[[[id]]]] 属性が必要です。
[SRC@en[HTML 4]]
[13] '''参照するものとの位置関係'''
[CODE(HTMLa)[declare]] な [CODE(HTMLe)[object]]
はその [CODE(HTMLe)[object]] の最初の実現値より前になければなりません。
[SRC@en[HTML 4]]
[[#comment]]
** 例
[8] 連結によって実現値化する例
[PRE(HTML)[
The Earth as seen from space.
...later in the document...
A neat animation of The Earth!
]PRE]
[WEAK[(HTML 4 仕様書より、改)]]
この例では、 [Q[animation of The Earth!]]
というリンクによって地球の動画を活性化することができます。
[9] 物体の実行時引数として引き渡す例:
[PRE(HTML)[
...view the poem in KublaKhan.txt here...
Read KublaKhan !
]PRE]
[WEAK[(HTML 4 仕様書より、改)]]
(この例では [CODE(HTMLa)[[[value]]]] 属性に [[URI参照]]のような値が使われています。
しかし、 HTML 4 の [CODE(HTMLa)[[[valuetype]]]] 属性の規定を読む限りでは、
[CODE(SGML)[[[IDREF]]]] のように [SAMP[TRIBUNE]]
とだけ指定しなければならないはずです。)
[[#comment]]
** 歴史
[14]
[CODE(HTMLe)@en[[[object]]]] [[要素型]]がまだ [CODE(HTMLe)@en[[[insert]]]]
と呼ばれていた当初の仕様案では、 [CODE(HTMLe)@en[[[alias]]]]
[[要素型]]が定義されていました。この[[要素型]]の[[要素]]は、
[CODE(HTMLe)@en[[[insert]]]] と似ていますが、
実際に[[文書]]中に[[物体]]を[[挿入]]はせず、
[CODE(HTMLe)@en[[[param]]]] から参照して使用することとしていました。
[CODE(HTMLe)@en[[[param]]]] [[要素]]から[[物体]]を参照するための方法として用意されたようです。
;; [CITE@en[HTML3 Linking and Embedding Model]]
[CSECTION@en[The ALIAS element]]
[15]
その後 [CODE(HTMLe)@en[[[insert]]]] から [CODE(HTMLe)@en[[[object]]]]
に[[要素型名]]が変更された際に、 [CODE(HTMLe)@en[[[alias]]]]
も統合されて、 [CODE(HTMLa)@en[[[declare]]]]
[[真偽値属性]]が設けられました。機能的には前案 >>14
と同じで、 [CODE(HTMLe)@en[[[param]]]] から
[[物体]]を参照するためのものだったようです。
;; [CITE@en[HTML3 Linking and Embedding Model]]
[CSECTION@en[More Information About OBJECT DECLARE]]
[16]
更に、 [[URI]] が指定できる場所に[[物体]]を指定するためという用法が追加されます。
[CODE(HTMLe)@en[[[a]]]] [[要素]]の [CODE(HTMLa)@en[[[href]]]]
[[属性]]を [CODE(HTMLa)@en[[[declare]]]] された
[CODE(HTMLe)@en[[[object]]]] を指す[[同文書参照]]とすると、
その[[物体]]への[[リンク]]となります。
([[活性化]]すると現在の [[HTML]] [[文書]]の代わりに宣言された[[物体]]が
[[Webブラウザ]]画面に表示されます。)
[CODE(HTMLe)@en[[[body]]]] [[要素]]の [CODE(HTMLa)@en[[[background]]]]
[[属性]]に同様に指定すると、[[背景]]がその[[物体]]になります。
高度な[[アニメーション]]を[[背景]]にしたい時などに使えるのだそうです。
(この記述は3月25日案で消滅しています。)
;;
=1996年3月11日案 [CITE@en[Inserting objects into HTML]]
=-[CSECTION@en[More Information About OBJECT DECLARE]]
=-[CSECTION@en[Document Background]]
=1996年3月25日案 [CITE@en[Inserting objects into HTML]]
[17]
その後ほぼそのままの内容の仕様案が続きましたが、
1997年7月の [[HTML 4]] 仕様案に取り込まれるにあたって全体的に書きなおされました。
;;
[CITE@en[Inclusions in HTML documents]]
この時に、2つ目のリンク先を[[物体]]にするという用途について、
現在の頁の代わりにという記述はなくなっています。
しかも、
[PRE(HTML example code)[
The Earth as seen from space.
...later in the document...
Click to see a neat
animation of The Earth!
]PRE]
のような使用例がある位ですから、
[Q[現在のページの代わりに]]という仕様から、
宣言された場所に、と変更されたようです。
;; もっとも、以前の案から、
未対応で[[代替内容]]が[[レンダリング]]される時に[[リンク]]を[[活性化]]したらどうなるのかは明らかではありませんでしたが。
;; ただ、この例の[[代替内容]]としての [CODE(HTMLe)@en[[[object]]]]
は次の案で削除されて、 >>8 のようになっています。
[[リンク]]の[[活性化]]の前後で][レンダリング]]がどう変化するべきなのかがよくわからない、
実装不能な仕様になってしまいました。仕様案のこの部分は、
[[HTML 4.01]] [[勧告]]までほとんど変わっていません。
[18]
[[WinIE]] や [[Gecko]] をはじめ、 [[HTML 4]] 以後の各種 [[Webブラウザ]]は、
[[DOM]] [[属性]]としての [CODE(DOMa)@en[[[declare]]]]
には対応していますが、 [[HTML 4]] で規定された
[CODE(HTMLa)@en[[[declare]]]] の機能は実装していません。
([[WinIE]] については [CITE@en[MSDN]]、[[Gecko]] については >>12 を参照。)
[19]
[[Ian Hickson]] は2005年9月に、 [[HTML 5]] には
[CODE(HTMLa)@en[[[declare]]]] [[属性]]を含めないつもりであると述べています
(>>12)。
[20]
[[デスクトップ]]環境の[[視覚ブラウザ]]で無視されてきた
[CODE(HTMLa)@en[[[declare]]]] [[属性]]ですが、
[[NTTドコモ]]の[[iモード対応HTML]] では、
Version 3.0 (2001年) で [CODE(HTMLe)@en[[[object]]]]
[[要素型]]が追加されると同時に
[CODE(HTMLa)@en[[[declare]]]] [[属性]]が追加されています。
;;
[CITE[作ろうiモードコンテンツ | NTTドコモ]]
[[iモード]]における [CODE(HTMLa)@en[[[declare]]]]
[[属性]]は、旧仕様案の2つ目の用法 (>>16) と同じで、
[[iアプリ]]などの[[携帯電話]]端末上で動作するプログラムを、
現在の文書に埋め込むのではなく、それだけで表示させるための
[CODE(HTMLe)@en[[[a]]]] [[要素]]の[[リンク先]]として使われます。
;; ただし、 [[HTML 4]] の例とは異なり、
[CODE(HTMLa)@en[[[href]]]] [[属性]]ではなく [CODE(HTMLa)@en[[[ijam]]]]
[[属性]]などの[[媒体型]]に応じた[[属性]]で指定します。
未対応の[[利用者エージェント]]で[[華麗にスルー]]できるようにそうなっていると思われます。
現実の使用例では、 [CODE(HTMLe)@en[[[object]]]] [[要素]]は
[CODE(HTMLe)@en[[[head]]]] 内に入っていたり [CODE(HTMLe)@en[[[body]]]]
内におかれたりしますが、いずれも[[空要素]]とするようです。
[[#comment]]
** 実装
[12]
[CITE@en[Bug 164979 - Implement declare attribute for object tag]]
[[#comment]]
** メモ
[[#comment]]
* メモ