2012-08-13 124 views
18

我正在编写一门介绍性的HTML课程。我记得9年前发现,在我学习HTML时,至少在IE中,<img><image>都用作显示图像的标签。的确,<image>仍然可以在5个顶级浏览器的最新版本中运行。<img> vs <image> HTML中的标记

我意识到<image>不正确,将不会通过http://validator.w3.org进行验证。但是,是否有人知道如果使用<image>而不是<img>,将不显示图像的浏览器?

此外,我认为现代浏览器会显示使用<image>标记创建的图像,因为这是初学者常犯的错误。这个假设是否正确?

+10

不是因为它是一个“初学者的错误”,而是因为“破损的网站使用它,现代浏览器需要帮助这些站点跛行”..因为你正在教一门课程,你可以确保更少破碎的网站被写入:*只有*'img'有效/正确/可接受。 :) – 2012-08-13 05:28:06

+0

我注意到一些初学者在我的互动课程(http://codeavengers.com)中错误地使用图像而不是img,即使我明确指出他们需要小心使用img和NOT图像。一些用户写信给我,感到困惑,说他们应该使用img而不是图像,因为图像无效......即使图像看起来完美无缺! – Mike 2012-08-13 05:34:46

+0

只需要100%w3c验证*或*对所有作业的[有]有效性的理由 - 所以如果他们*可以*证明'图像',但如果他们不能.. :) – 2012-08-13 05:40:22

回答

16

是的,没有。正如您指出<image>长期以来一直是<img>的同义词。我相信这是一个早期的Netscape浏览器,首先这样做,可能是为了弥补用户错误,或者可能是因为当时有争议该元素是否实际上应该被称为<image><img>

无论如何,正如pst指出的那样,一旦它在主导当时市场的浏览器中实现,网页就会依赖它。然后,它的持久性会降低到浏览器制造商面临的商业压力。如果所有主流浏览器都支持它,那么浏览器A决定尽管版本V支持它,但版本V + 1不支持版本V + 1,只要版本V + 1发布,它们就会收到很多消息说“网站S在你最新的浏览器中被破坏,你的浏览器是垃圾,我要切换到浏览器B“。

HTML5解析规范要求在树构建阶段将<image>标记映射到img元素,因此永远不会有任何理由使用它。

与其他HTML消费者(比如不太知名的搜索引擎)相比,我不太关心浏览器。我相信image对于img的同义词不是广为人知,并且许多这样的工具因此将无法将<image>视为引用图像资源。

+0

我没有注意到HTML5解析规范要求将图片标签映射到img。我很高兴你提到它,因为我在http://codeavengers.com上的课程中假设,如果学习者犯了这个错误,图像标签将出现在DOM树中。 – Mike 2012-08-13 23:44:07

0

确实。现代浏览器将显示无效的代码,以确保旧网站仍能正确显示,并且稍微无效的代码不会搞砸页面。

例如,在打开一个新的之前忘记关闭<tr>--所有现代浏览器都会简单地假定您关闭了它。

我不知道一个使用最新的浏览器将无法显示<image>标签,但会显示<img>标签。

+5

根据[whatwg]( http://www.whatwg.org/specs/web-apps/current-work/multipage/syntax.html#syntax-tag-omission)''是可选的。如果您忽略了''标签,您的网页仍然会生效。所以我不确定''这个例子是这个问题的最好例子。 – Mike 2012-08-13 06:09:40

4

我刚刚完成调试此问题,我正在提交,以前没有阅读过上述答案。

虽然没有成熟的浏览器,但电子邮件客户端经常被用作浏览器。

我发现,困难的方式是,使用裸HTML(使用默认的裸DTD规范)的Android Gmail客户端确实会出现此问题。它仅响应<img /> [即不是<image />]。 gmail.com可以使用<image />,但不能使用Android Gmail客户端。

虽然电子邮件客户端并不是一个真正的浏览器,但我认为您可能会对此感兴趣。

+3

欢迎来到Stack Overflow!我已经修复了您的文章的格式,以便HTML显示出来。为了将来的参考,可以通过用四个空格缩进来格式化代码块,通过用反引号(')将内联代码包围起来,可以对内联代码进行格式化。您也可以选择您的代码并在编辑器中点击** {} **按钮。 – Stijn 2014-05-15 21:41:48