为什么网站会在HTML标记中使用</img>?

4
我遇到了这个页面https://www.google.com/accounts/ServiceLogin,这是一个Google服务的登录页面,除了省略doctype之外,还包含6个</img>标签。例如:
  <img src="https://www.google.com/accounts/google_transparent.gif"
           alt="Google">
  </img>

他们为什么要这样做?它有什么好处/功能/祖先权益可以实现吗?

我所读到的关于HTML和XHTML的任何内容都很明确:

在HTML 4.01及以前版本中,<img>标签永远不应该被关闭<img src="img.gif" alt="text">)。

在XHTML中,<img>标签应使用自闭合语法来关闭(<img src='img.gif' alt="text" />)。

在HTML5中,(据我所知)两种语法(开放式或自闭合式)都是可接受的,但仍然永远不要使用</img>


3
为了保持一致性。在我看来,HTML5做得很对,因为这是HTML中所有其他标签的处理方式。为什么<img>应该得到特殊处理呢? - Robert Harvey
我理解你的观点。然而,像 <br></br> 这样的写法仍然感觉不对。 - irishbuzz
3
如果要将XHTML视为真正的XML,则不能声明必须使用自闭合语法。可以接受使用自闭合标签(例如 <img/>)或显式关闭标签(例如 </img>)。很遗憾Google没有声明一个文档类型。 - Bert F
1
@Bert F,你说得有点对;XHTML 1.0/1.1明确表示这样做是不好的实践,因为用户代理行为。XHTML 2试图通过实现</img>来匹配</object>来迈向XML纯度,但最终被淘汰了。 - Yahel
3个回答

2
我认为这是一个bug。在至少一个情况下,它似乎只是生成完全无效的代码:
  <img class=logo
       src='https://www.google.com/intl/en/images/logos/accounts_logo.gif'
       alt="Google" />
  </img>

您可以看到img标签是自闭合的,并且被单独的结束标签关闭。显然这是不打算这样做的。而且这也有点奇怪,因为它是不一致的。我建议您给他们发电子邮件询问一下。


其实网络上有很多关于Google工程师不在乎编写符合标准的代码的轶事证据。这很有趣,因为他们现在是主要的浏览器供应商之一... - Yi Jiang
也许吧。我确实听说过他们这样做来缩短页面,但我看不出为什么要留下这些东西并使页面变得更长...嗯,好吧,我的任务不是质疑我们伟大的谷歌霸主... :) - Chris

2
我发现这段代码实际上只有一种(提议的)方式是符合规范的,尽管它不适用于 Google 的情况(因为他们缺少 DOCTYPE)。
XHTML 2曾被提议并废弃,其中实现了一个</img>标签作为替换alt属性的方法。 因此,在XHTML 1.0 / 1.1中,不再使用以下代码: <img src="monkeys.gif" alt="猴子扔粪便" /> 而是使用: <img src="monkeys.gif">猴子扔粪便</img> 当 monkeys.gif 加载失败时,“猴子扔粪便”将显示出来。
这将使 <img> 表现得像其他内容嵌入标签,如<object>
按照规范的说法, 元素是一个容器,用于嵌入属性(如src)。由于这些属性可以应用于任何元素,因此元素并不是必需的,但它包含在内是为了方便过渡到XHTML2。像元素一样,只有在引用的资源不可用时,才会呈现此元素的内容。

1
也许他们的HTML生成器会在每个标签后面加上相应的,这只是编程上更懒惰的一种选择,用于单个标签的情况下,它比写更方便。

1
有趣的想法,但似乎不是<br>标记的关闭方式(即没有</br>的实例)。 - Yahel

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接