[1] [[HTML]] 系マーク付け言語では一般に、 [[埋込みリンク]]要素でリンクされる (埋め込まれる) 資源の [[URI参照]]を書く属性です。 [2] >>1 HTML の要素で [CODE(HTMLa)[src]] 属性を持つものの例としては、 [CODE(HTMLe)[[[img]]]], [CODE(HTMLe)[[[embed]]]], [CODE(HTMLe)[[[input]]]], [CODE(HTMLe)[[[script]]]], [CODE(HTMLe)[[[audio]]]], [CODE(HTMLe)[[[video]]]], [CODE(HTMLe)[[[frame]]]], [CODE(HTMLe)[[[iframe]]]] などがあります。 [[#comment]] * img 要素 src 属性 (HTML, XHTML 1) [4] [[HTML]] の [CODE(HTMLe)[[[img]]]] 要素の [DFN[[CODE(HTMLa)[src]] 属性]]は、 画像資源の位置を指定します。 [5] 仕様書: - [[HTML 4]] -- [CODE(HTMLe)[img]] 要素 [CODE(HTMLa)[src]] 属性 -- [HTML4CDATA] [CSECTION[6.2 SGML basic types]] [[#comment]] ** 属性値 [6] この属性値の値は [CODE(SGML)[%[[URI]]]] です。 [[SGML]] 的には [CODE(SGML)[[[CDATA]]]] です。 [48] 稀に、 URI 参照の前後に[[改行]]が含まれていることがあります。 HTML 4 によれば、 UA は [CODE(SGML)[CDATA]] 属性値の前後の[[空白]]を無視しても構いません [SRC[HTML4CDATA]]。 主要な Web ブラウザは無視するようですが、 無視しない利用者エージェントもあります。 HTML 4 は属性値の前後に空白を入れるべきではないとしています。 [7] この属性は必須です。 [[#comment]] ** Mozilla の内部画像 [8] [CODE(HTMLa)[src]] 属性の値は本来 URI 参照ですが、 [[mosaic]] 系 UA の中には特定の値を指定すると内部組込みの特定の画像を表示することがあります。 [9] 存在が知られている組込み画像 ,[CODE(HTMLa)[src]] ,[CODE[internal-gopher-menu]] ,[CODE[internal-gopher-sound]] ,[CODE[internal-gopher-movie]] ,[CODE[internal-gopher-telnet]] ,[CODE[internal-gopher-text]] ,[CODE[internal-gopher-audio]] ,[CODE[internal-gopher-binary]] ,[CODE[internal-gopher-find]] ,[CODE[internal-gopher-image]] ,[CODE[internal-gopher-index]] [10] [[相対URI]] と区別できないのであんまりよくないと思いますが。。。 [[#comment]] *** 実装 [31] [[NC]] 4.01 で [CODE[internal-gopher-audio]] と [CODE[internal-gopher-find]] が表示できないみたい。 [11] [[Gecko]] な [[Mozilla]] では [[NN]]4 以前より表示できる数が少ないようです。 特に、 [[Netscape]] 6 くらいの古い Gecko Mozilla ではどれも表示できません。 (ということは、わざわざその後復元されたということです。) [CODE(URI)[[[resource:]]///res/html/gopher-[VAR[*]].gif]] が使われているみたいです。 [23] >>11 勝手にファイルを追加したも反映はされないみたいです。 [13] >>12 によれば [[IBM]] の [[WebExplorer]] も一部対応しているそうです。 また、 WebExplorer には [CODE(HTMLa)[[[internal]]]] 属性があって、こちらに組込み画像名を指定する方法も使えるそうです。 [[#comment]] *** 歴史 [16] 由来は [[Mosaic]] までさかのぼります: ''"internal-gopher-image"?!?'' [[#comment]] ** 不思議解釈 [51] ([CODE(HTMLe)[[[img]]]] 要素について) > 画像を表示させるタグです。画像には「jpg(jpeg)」「gif」「png」 があります。拡張子も記載しないと表示されません。オンマウス (マウスを画像の上に乗せること)で説明文を表示させたい場合は 「alt属性」を記載します。 出典: [CITE[画像/アオゾラウェブデザイン[Aozora Web Design][HTMLタグ/tag]]] (2005年4月現在) [[拡張子]]がないと不都合が出る[[利用者エージェント]]が存在することは疑いないが、 文脈的に著者がそこまで配慮してこの引用文を書いたとは思えない。 不思議解説者はこのように脳内の妄想をさも真理であるかのように書くのだ。 [[#comment]] *** 参考文献 - [12] ''Browser-interne Ressourcen'' - [14] 無題 [[#comment]] *** メモ [15] ところでなぜだかわかりませんが、 この隠し機能を説明している文書はほとんどが非英語の欧州語です。なぜでしょ。 [20] [[Mozilla]] で、 [[CSS]] で [SAMP(CSS)[background-image: url(internal-gopher-text)]] とかしてみたけど流石に駄目でした。 [[#comment]] ** 安全性 [49] [CODE(HTMLe)[[[img]]]] 要素型の安全性の項もご覧下さい。 [[#comment]] ** メモ [[#comment]] * input 要素 src 属性 (HTML, XHTML 1) [3] [[HTML]] の [CODE(HTMLe)[[[input]]]] 要素の [DFN[[CODE(HTMLa)[src]] 属性]]は、 図形的提出ボタンを飾る画像を指定します。 この属性は、 [CODE(HTMLa)[[[type]]]] 属性が [CODE(HTML)[[[image]]]] の時使えます。 [40] 仕様書: - [[HTML 4]] -- [CODE(HTMLe)[input]] 要素 [CODE(HTMLa)[src]] 属性 [50] HTML 4 DTD の[[注釈]] (参考) には [Q[for fields with images]] と説明があります。 ([[名無しさん]] [sage]) [[#comment]] ** 属性値 [41] この属性の値は [CODE(SGML)[%[[URI]]]] です。 [[SGML]] 的には [CODE(SGML)[[[CDATA]]]] です。 [42] この属性は省略可能です。 [[#comment]] ** メモ [43] [CODE(HTML)[[[image]]]] 制御子の説明もご覧ください。 [[#comment]] * frame 要素、iframe 要素 src 属性 (HTML, XHTML 1) [32] [[HTML]] の [CODE(HTMLe)[[[frame]]]] 要素・ [CODE(HTMLe)[[[iframe]]]] 要素の [DFN[[CODE(HTMLa)[src]] 属性]]は、そのフレームの初期内容の場所を指定します。 [33] 仕様書: - [[HTML 4]] -- [CODE(HTMLe)[frame]] 要素 [CODE(HTMLa)[src]] 属性 -- Setting the initial contents of a frame [[#comment]] ** 属性値 [34] この属性の値は [CODE(SGML)[%[[URI]]]] です。 [[SGML]] 的には [CODE(SGML)[[[CDATA]]]] です。 [38] 但し、フレームの定義と同じ文書の内容を参照することはできません [SRC[HTML 4 16.2.2.1]]。 仕様書の例 (>>37) は [CODE(HTMLe)[noframes]] にある要素を参照していますが、 自分自身 (フレーム集合文書) そのものを指すことも当然できないのでしょう。 [35] この属性は省略可能です。 [[#comment]] ** 応用 [39] >>38 より、実装は直接再帰状態を扱う必要がありません。 しかし、間接的に再帰状態なのは陽に禁止されてはいません。 (意味が無いのでするべきではないでしょう。) 直接にせよ間接にせよ、実装は自分自身を参照していないかチェックするべきでしょう。 (しかし必死でレンダリングを繰り返す哀れなブラウザも少なくないのが事実です。) [[#comment]] ** 例 [36] 4つのフレームがあるフレーム集合文書の例 [SRC[HTML 4 16.2.2.1]] [PRE(HTML)[ A frameset document ]PRE] レンダリング例: [PRE[ ------------------------------------------ |Frame 1 |Frame 3 |Frame 4 | | | | | | | | | | | | | | | | | | | | | | | | | | | | | -------------| | | |Frame 2 | | | | | | | | | | | ------------------------------------------ ]PRE] それぞれのフレームに [CODE(HTMLa)[src]] で指定された[[資源]]をレンダリングしたのが初期状態です。 [37] 同じ文書を参照する'''違法'''な例 [SRC[HTML 4 16.2.2.1、改]] [PRE(HTML)[ A frameset document ...some text... <H2><A name="ANCHOR_IN_SAME_DOCUMENT">Important section</A></H2> ...some text... ]PRE] この例では、2つ目の [CODE(HTMLe)[frame]] で[[素片識別子]]だけの [[URI参照]]を指定しています。つまり、 [CODE(HTMLe)[[[noframes]]]] 要素内にある、指定された名前の [CODE(HTMLe)[a]] 要素を参照しているのですが、このような指定は'''違法'''とされています。 [[#comment]] ** メモ [[#comment]] * script 要素 src 属性 (HTML, XHTML 1) [44] [[HTML]] の [CODE(HTMLe)[[[script]]]] 要素の [DFN[[CODE(HTMLa)[src]] 属性]]は、 外部[[スクリプト]]の位置を指定します。 [45] 仕様書: - [[HTML 4]] -- [CITE[18.2.1 The [CODE(HTMLe)[SCRIPT]] element]] -- [CODE(HTMLe)[script]] 要素 [CODE(HTMLa)[src]] 属性 [[#comment]] ** 属性値 [46] この属性の値は [CODE(SGML)[%[[URI]]]] です。 [[SGML]] 的には [CODE(SGML)[[[CDATA]]]] です。 普通は[[素片識別子]]は使いませんが、 [[スクリプト言語]]によっては使い道があるかもしれません。 少なくても使ってはいけない理由はないでしょう。 使用実績のある [[scheme]] は、 [CODE(URI)[[[http]]:]], [CODE(URI)[[[https]]:]] くらいでしょうか。探せば [CODE(URI)[[[ftp]]:]], [CODE(URI)[[[cid]]:]] もあるかもしれませんし、ブラウザは実装していそうです。 [CODE(URI)[[[chrome]]:]] や [CODE(URI)[[[resource]]:]] など UA 依存の特殊な scheme に対応しているものもあるでしょう。 [47] この属性は省略可能です。省略すると [CODE(HTMLe)[script]] 要素の内容がスクリプトとみなされます。逆に指定すると内容は無視されます。 [SRC[HTML 4 18.2.1]] [CODE(HTMLa)[src]] 属性を省略して、内容は空であるとしても、 HTML 的には空のスクリプトであるというだけで問題ないはずです。 しかし、スクリプト言語によっては、 まったくの空ではいけないというものももしかするとあるかもしれません。 普通は空でも何も行われないだけです。ただ、 空なら既定の動作をするという変なスクリプト言語もあるかもしれません。 [[#comment]] ** 実装 [21] [CODE(HTMLa)[src]] 属性に対応しているのは [[NN]] 3.0 以降だそうです。 [52] >>21 つまり [[Netscape Navigator]] 2 では [CODE(HTMLa)@en[src]] を指定しても[[内容]]を実行してしまいます。 これを使って版で動作を分けるという方法が使われたこともありました。 ([[名無しさん]] [sage]) [53] [[Netscape Navigator 3]]で導入されました。 ;; [CITE[Welcome to Netscape Navigator 3.03]] この当時は、[CODE(HTMLa)@en[[[language]]]]または[CODE(HTMLa)@en[[[src]]]]のいずれかが指定されていなければならず、[CODE(HTMLa)@en[[[src]]]]が指定されている時[CODE(HTMLa)@en[[[language]]]]はあってもなくてもよいとされていました。 また、[CODE(HTMLa)@en[[[src]]]]の指定する[[資源]]については、[[JavaScript]]であることを示すために[[媒体型]][CODE(MIME)@en[[[application/x-javascript]]]]と[[札付け]]しなければならないとされています。 ([[名無しさん]] [sage]) [[#comment]] ** メモ [[#comment]] * メモ