一尘不染

为元素编写自闭标签不是传统上的空习惯吗?

html

我已经注意到jQuery(或者是Firefox)会打开我的一些 <span class="presentational"></span> into <span class="presentational" />

现在我的问题是,这样写我的标记可以吗?有浏览器会窒息吗?

就个人而言,<span class="presentational" />如果它是空的,我认为这样做看起来更干净。


阅读 272

收藏
2020-05-10

共1个答案

一尘不染

我假设您的问题与在Firefox中查看源代码时自动关闭元素上的红色斜杠有关。如果是这样,您就陷入了浏览器制造商与网络开发人员之战中最激烈但同时又被动的激进辩论之一。XHTML不仅仅是关于文档的标记。这也与如何通过网络提供文档有关。

在我开始之前;我正在努力不站在这里。

XHTML 1.1规范指出,Web服务器应为Content-Type为application / xhtml +
xml的XHTML提供服务。Firefox会将那些尾随的斜杠视为无效,因为您的文档以text / html而不是application / xhtml +
xml的形式提供。举两个例子;相同的标记,一个标记为application / xhtml + xml,另一个标记为text / html。

http://alanstorm.com/testbed/xhtml-as-
html.php

http://alanstorm.com/testbed/xhtml-as-
xhtml.php

Firefox在meta标记中将尾部斜杠标记为对于text / html提供的文档无效,而对于application / xhtml +
xml提供的文档有效。

为什么有争议

对于浏览器开发人员而言,XHTML的重点是您可以将文档视为XML,这意味着,如果有人向您发送了无效的信息,那么规范说明您不必解析它。因此,如果文档充当application
/ xhtml + xml并具有格式不正确的内容,则允许开发人员说“不是我的问题”。您可以在这里看到实际效果

http://alanstorm.com/testbed/xhtml-not-
valid.php

当文档用作text / html时,Firefox将其视为普通的旧HTML文档并使用原谅,为您修复它,解析例程

http://alanstorm.com/testbed/xhtml-not-valid-as-
html.php

因此,对于浏览器制造商来说,充当text / html的XHTML太荒谬了,因为浏览器的渲染引擎从未将它视为XML。

几年前,Web开发人员希望不仅仅是标记猴子(免责声明:我也包括其中之一),他们开始寻找开发最佳实践的方法,这些最佳实践不涉及三次嵌套表,但仍然可以提供引人注目的设计体验。他们/我们锁定了XHTML
/ CSS,因为W3C表示这是未来,唯一的选择是由单个供应商(Microsoft)控制事实上的标记规范。真正的罪恶在于只有 一个供应商
,而不是微软。我发誓。

那么争议在哪里?application / xhtml + xml存在两个问题。第一个是Internet Explorer。IE中有一个遗留的bug
/功能,其中内容作为application / xhtml + xml会提示用户下载文档。如果您尝试通过IE访问上面列出的xhtml-as-
xhtml.php,则很可能会发生这种情况。这意味着,如果要使用application / xhtml + xml,则必须 浏览器嗅探IE
,检查Accepts标头,然后仅将application / xhtml +
xml提供给接受它的浏览器。,而且还违背了Web开发人员所追求的“一次写入”原则。

第二个问题是XML的苛刻性。再次,这是易发火焰的问题之一,但是有些人认为单个不良标签或编码不正确的单个字符不应导致用户看不到他们想要的文档。换句话说,是的,规范说如果格式不正确,您应该停止处理XML,但是用户不关心规范,他们关心猫的网站已损坏。

XHTML 1.0(不是1.1)规范增加了更多的汽油问题,该规范说XHTML文档_可以_用作text/html,前提是遵循某些兼容性准则。诸如img标签之类的东西会自动关闭等。这里的关键词是
五月 。用RFC讲,可能意味着可选。Firefox选择不将使用XHTMLdoctype而是text/html内容类型的文档视为XHTML。但是,W3C验证程序将很高兴地将这些文档报告为有效。

我将让读者去思考一种同时存在的文化奇迹/恐怖,该文化写了一篇文档来定义“ 可能 ”一词的含义。

向前进

最后,这就是整个HTML 5的意义所在。XHTML变成了一个政治热点,以至于许多想将语言向前发展的人决定朝另一个方向发展。他们制定了HTML5规范。目前,该规范已在W3C中进行了混编,并有望在未来十年内完成。同时,浏览器供应商正在从进行中的规范中选择功能并加以实现。

评论更新

Alex在评论中指出,如果您要嗅探某些内容,则应检查Accept标头以查看用户代理是否接受application/ xhtml + xml。

这是绝对正确的。通常,如果要嗅探,请嗅探该功能,而不是浏览器。

2020-05-10