我注意到jQuery(或者它是Firefox)会转变我的一些 into
现在我的问题是,写这样的标记是否可以?任何浏览器都会窒息吗?
就我个人而言,如果它是空的,我觉得它看起来更干净.
当你在Firefox中查看源代码时,我假设你的问题与自闭元素上的红色尾部斜杠有关.如果是这样的话,你就会陷入最强烈的冲击之中,同时在浏览器制造商和网络开发者大战中同时进行被动的激进辩论.XHTML不只是关于文档的标记.它还涉及如何通过网络提供文档.
在我开始之前; 我正努力不要偏袒这里.
XHTML 1.1规范说Web服务器应该使用Content-Type of 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将元标记中的尾部斜杠标记为对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.
很多年前,网络开发人员希望不仅仅是标记猴子(免责声明:我将自己列为其中之一),他们开始寻找开发最佳实践的方法,这些方法不涉及三次嵌套表,但仍然允许引人注目的设计体验.他们/我们锁定了XHTML/CSS,因为W3C说这是未来,唯一的另一个选择是一个单一供应商(微软)控制事实上的标记规范的世界.真正的邪恶是单一供应商,而不是微软.我发誓.
那么争议在哪里?application/xhtml + xml有两个问题.第一个是Internet Explorer.IE中存在遗留错误/功能,其中作为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选择不处理使用XHTML doctype但内容类型为text/html的文档作为XHTML.但是,W3C验证器会很乐意将这些文档报告为有效.
我会留给读者思考写入一个文件来定义他们的意思由字文化的同时难怪/恐怖可能.
最后,这就是HTML 5的全部内容.XHTML成为一个政治上的烫手山芋,一群想要推动语言向前发展的人决定走向另一个方向.他们为HTML 5制作了一个规范.目前W3C正在进行这项规范,预计将在未来十年内完成.与此同时,浏览器供应商正在从正在进行的规范中挑选和选择功能并实施它们.
在评论中,Alex指出,如果您要嗅探某些内容,则应检查Accept标头以查看用户代理是否接受application/xhtml + xml.
这绝对是正确的.一般情况下,如果您要嗅闻,请嗅探该功能,而不是浏览器.
对其他答案的补充:在IE中,在标记中使用元素会导致JavaScript中的DOM遍历方法出现各种问题.看看下面的XHTML文档:
Test Paragraph containing some text followed by an empty span
Second paragraph just containing text
我们的想法是,当页面加载时,JavaScript将获得对空跨度的引用并显示其HTML内容.那将是一个空字符串,对吧?不在IE中它不会.在IE中,您将获得整个文档中跨度之后的所有内容:
Second paragraph just containing text
此外,第二个显示在span的
childNodes
集合中.同样也在身体的
childNodes
集合中,这意味着节点可以有效地拥有多个父母.对于依赖于遍历DOM的脚本来说,这不是一个非常好的消息.
我也在博客上写过这篇文章.
是.它是.在旧浏览器的某些情况下会导致问题.
在这种情况下,旧浏览器可能无法理解该标记已结束.