17

Inspired by this question, where the poster casually states as fact that <object> should be used instead of <img> to embed images in HTML documents.

I'm developing a web app at the moment, and, being a perfectionist, I try to make it all shiny and compliant with all the standards. As far as I know, the <img> tag is to be deprecated in the upcoming standards for xHTML, and as nowadays even IE is able to handle <object> properly, I wanted to use the <object> tag for all the images on my site

It became clear that the "upcoming standards" the poster was talking about was the abandoned XHTML2 spec, which didn't even formally deprecate <img> anyway. (Although there were apparently rumors to that effect.)

To the best of my knowledge, I've not seen anyone in the web development community advocating for the usage of the general-purpose <object> tag over the arguably more semantic and definitely more compatible <img> tag.

Is there a good reason to use <object> instead of <img>? Should <object> even be used at all in place of <img> – what might this break?


Use Guid.TryParse on your id string, then you'll know what's going on.

4

4 に答える 4

18

To answer the question in the heading: yes, it is valid, of course. The validity of an object element does not even depend on the type of data being embedded. If you meant to ask whether it is correct, then the answer is yes, there is nothing in the specifications that would forbid it or recommend against it.

画像の埋め込みに使用する理由として考えられるものの中objectで最も実用的なのは、フォールバックコンテンツに見出し、リスト、表、フレーズマークアップなどのHTMLマークアップを含めることができることです。このimg要素を使用すると、フォールバックコンテンツとしてプレーンテキストのみを指定できます。段落の区切りも指定できません。

アクセシビリティ上の理由から、ドキュメントを非ビジュアルブラウジング(スクリーンリーダー、点字など)で使用する場合や、何らかの理由で画像が表示されない場合など、画像にはフォールバックコンテンツを含める必要があります。コンテンツが豊富な画像(たとえば、組織図や複雑なプロセスを説明する図面)の場合、フォールバックコンテンツは長く、何らかの構造を持っている必要があります。

objectただし、画像の埋め込みに使用することはめったにありません。フォールバックコンテンツの重要性は広く理解されておらず、実用的な経済的および技術的考慮事項により、フォールバックの問題が無視されることがよくあります。さらに、objectブラウザでの実装が遅く、バグが多く、質的に貧弱であるという長い歴史があります。つい最近になってobject、画像を含めるためにかなり安全に使用できるようになりました。

どの要素がよりセマンティックであるかという質問はほとんど無駄であり、回答は通常、「セマンティック」の概念を誤解するさまざまな方法を反映しています。imgとはobject、外部コンテンツの包含(埋め込み)を意味します。このimg要素は、原則として画像を含めるためのものですが、それが意味するものは何でも、ビデオを含めるためにも使用されています。object要素の場合、属性typeを使用して、埋め込みコンテンツのタイプを特定の画像タイプまで指定できますtype=image/gif。または、開いたままにすることもできます。

これは、object要素がより柔軟であることを意味します。タイプを指定せずに、HTTPヘッダーで指定できるようにすることができます。objectこのようにして、要素や埋め込みドキュメントを変更せずに、埋め込みデータのタイプを変更できます。たとえば、埋め込まれたコンテンツが画像である単純なバージョンから始めて、後でそれをHTMLドキュメント(たとえば、画像とテキストを含む)に置き換えることができます。

于 2012-05-02T04:23:14.547 に答える
9

画像を表示するために使用されるオブジェクトを見たのは、何らかの理由で目的のオブジェクトを読み込めなかったときに「フォールバック」を作成することだけです。W3仕様からこの例を見てください:

<OBJECT title="The Earth as seen from space" classid="http://www.observer.mars/TheEarth.py">
    <!-- Else, try the MPEG video -->
    <OBJECT data="TheEarth.mpeg" type="application/mpeg">
        <!-- Else, try the GIF image -->
        <OBJECT data="TheEarth.gif" type="image/gif">
            <!-- Else render the text -->
            The <STRONG>Earth</STRONG> as seen from space.
        </OBJECT>
    </OBJECT>
</OBJECT>

オブジェクトを介して画像を読み込もうとすることは、基本的に画像から意味的な意味を取り除くことだけです。これは非常に悪い習慣だと思います。

于 2012-05-02T03:24:14.647 に答える
5

の代わりに使用する実際的な理由はありません。常に一貫性がなく、乱雑にサポートされてきました。画像、Flash コンテンツ、またはマルチメディア コンテンツに使用します。基本的にleft の唯一の用途は、特定のプラグインを呼び出すことです。objectimgobjectimgembedvideoaudioobject

とはいえ、 の存在に対する哲学的立場objectは依然として非常に優れています。これは、ネストされたフォールバック コンテンツを含むことができるあらゆるタイプのコンテンツの汎用要素となるように意図されていました。W3C/XHTML2 には、構文と意味の純粋性を強調する html の非常に理想的なロードマップがありhref、任意の要素を許可する (を排除するa)ことやimgobject. objectただし、ブラウザは完全に一般的な方法で正しく動作するようには見えません。さらに、汎用object要素の js API を定義することは困難でした。videoこれが、とaudioが分離されている大きな理由objectです。ビデオを提供しても、js ビデオ API は公開されません。

ただし、XHTML2 が負けて HTML5 が勝ち、HTML5 が有利imgになるため、 を使用しますimg

于 2012-05-02T03:34:36.560 に答える
0

img タグよりもオブジェクトを使用する実際のユース ケースに出会いました。PlantUML を使用して、ツールチップを含む SVG を生成しています。img タグを使用して img を含めると、ネイティブの SVG ポインター イベント イベントが機能しません。しかし、オブジェクト タグを使用すると、presto - オンホバー/マウスオーバーのすべての動作が期待どおりに機能します。

于 2021-10-20T19:41:48.100 に答える