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?


Download FTP directory contents to ios

I have a website, let's say it's "http://www.jwilkthings.com/stuff"

I have a bunch of .txt files stored on this website, i.e. "http://www.jwilkthings.com/stuff/text1.txt"

What I'm wanting to do is find a way in iOS to download all of those text files without knowing what the document name is. I can already retrieve them manually as long as I have a file name, but I would rather just get all of them at once and put them in the documents directory if possible. I currently use FileZilla to upload all of the text files, so I can use FTP if needed.

4

4 回答 4

18

回答标题中的问题:是的,它当然是有效的。元素的有效性object甚至不取决于嵌入的数据类型。如果您要问它是否正确,那么答案是肯定的,规范中没有任何内容会禁止或建议反对它。

在使用嵌入图像的可能原因中object,最实用的是它允许后备内容包含 HTML 标记,例如标题、列表、表格和短语标记。该img元素允许您仅将纯文本指定为后备内容 - 甚至无法指定分节符。

出于可访问性的原因,任何图像都应具有要呈现的后备内容,例如,当文档用于非可视浏览(屏幕阅读器、盲文等)或图像由于某种原因未显示时。对于任何内容丰富的图像(例如,组织结构图或描述复杂流程的绘图),后备内容需要很长并且需要具有某种结构。

但是,很少object用于嵌入图像。后备内容的重要性并未被广泛理解,实际的经济和技术考虑往往会导致后备问题被忽视。此外,object在浏览器中实现缓慢、错误且质量不佳的历史由来已久。直到最近才可以object相当安全地使用图像包含。

哪个元素更具语义性的问题大多是徒劳的,答案通常反映了误解“语义”概念的各种方式。两者imgobject均表示包含(嵌入)外部内容。该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

没有很好的实际理由使用object而不是img. object一直受到不一致和混乱的支持。用于img图像、embedFlash 内容和video/或audio多媒体内容。基本上objectleft 的唯一用途是调用特定的插件。

也就是说,object存在的哲学立场还是很好的。它旨在成为可以包含嵌套后备内容的任何类型内容的通用元素。W3C/ XHTML2有一个非常理想化的 html 路线图,强调句法和语义的纯洁性,并希望href在任何元素上都允许(a消除. 然而,浏览器似乎永远无法以完全通用的方式正确运行。此外,很难为通用元素定义 js API。这就是为什么和是分开的一个重要原因——提供视频不会暴露 js 视频 API。imgobjectobjectobjectvideoaudioobject

但是,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 回答