当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《是否为传统上不是坏习惯的元素编写自闭标签?》经验,为你挑选了3个好方法。

我注意到jQuery(或者它是Firefox)会转变我的一些 into

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

就我个人而言,如果它是空的,我觉得它看起来更干净.



1> Alan Storm..:

当你在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提供的文档有效.

为什么这是有争议的

对于浏览器开发人员来说,XHT​​ML的重点是您可以将文档视为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.

这绝对是正确的.一般情况下,如果您要嗅闻,请嗅探该功能,而不是浏览器.


FWIW,当你写"Firefox选择不处理使用XHTML文档类型但内容类型为text/html作为XHTML的文档时".请注意,这是基于当时相关W3C工作组的建议: http://lists.w3.org/Archives/Public/www-html/2000Sep/0024.html
很好的总结,有趣的测试平台示例.我确认IE6不想显示xhtml-as-xhtml.对于那些想知道的人,像我一样,FF3正确显示前两个文档,但在第一个文档的View源代码中,斜杠是红色的......

2> Tim Down..:

对其他答案的补充:在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的脚本来说,这不是一个非常好的消息.

我也在博客上写过这篇文章.


尼斯.请注意,这不仅适用于span,也适用于其他内联元素.无论您使用还是(尽管后者导致无效的XHTML),都是如此.但**不是**使用HTML5 shiv添加的新HTML5元素.使用"document.createElement('meter')"并将替换为具有相同的多重父效果,但将替换为会创建您通常期望的DOM ,因为当使用document.createElement将xxx注册为html标记名称时,IE将视为自关闭标记.

3> Mehrdad Afsh..:

是.它是.在旧浏览器的某些情况下会导致问题.






















    
小白也坚强_177
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有