XHTML标签的自关闭写法的坏处分析
当我们谈论XHTML中的img标记时,我们通常这样写:。这种自闭合的写法在XML中是完全合法的,但当我们进入XHTML的世界,事情就变得复杂起来。特别是当我们面对不同浏览器的兼容性问题时,一些标签的自闭合写法可能会引发意想不到的困扰。
对于那些熟悉XML开发的人来说,他们可能习惯于任何不含子节点的元素都可以采用自闭合的写法。但在XHTML中,尽管理论上允许任何标签采用自闭合的方式书写,但浏览器的兼容性却带来了不小的挑战。特别是Internet Explorer(IE),它无法正确识别某些标签的自闭合写法。
让我们尝试一个例子。请尝试输入以下XHTML代码并在IE中浏览:
hello world
。你可能会发现,只能看到前面的“hello”,而后面的“world”却消失了。这看起来很奇怪,可能让许多开发者头疼不已,花费大量时间却找不到合理的解释。通过另一个类似的例子,我们可以找到答案:
hello world
。在IE中查看其显示效果,你会发现“hello”正常显示,而“world”则显示在textarea里面。这说明IE并没有正确识别textarea标签已经自闭合,而是将其当作没有闭合,并将后面的内容识别为textarea的内部内容。于是,我们明白了前面那个例子为什么看不到后面的“world”,因为它被IE当作script的一部分来识别了。这说明在使用XHTML时,我们不能像XML那样随意使用自闭合的写法。只有那些原本就不需要关闭的标签才可以使用自闭合的写法,其他标签即使没有任何内容,也最好使用成对的闭合写法。
值得注意的是,不仅仅是IE,很多地方都可能遇到由于器(parser)不严谨而引起的问题。在书写XHTML时,我们还需要迁就一些老HTML继承下来的习惯,不能认为符合了XML的标准就可以随意书写。
有些读者可能认为我举的例子不符合XHTML规范,但实际上,这些例子都是合法的XHTML文档片断。规范中也提到了空元素可以有一个结束标记,或者像
这样以/>结束。尽管规范并没有要求XHTML1.0文档必须兼容现有的浏览器,但在实践中这确实是可行的。
我写下这篇文章的目的并不是强调只需符合XHTML规范就够了,也不是强调符合XHTML并兼容HTML4就足够。而是应该考虑更多需要兼容的情况。例如,在内容管理系统(CMS)中,用户提交的HTML可能会经过处理转化为XHTML。在这种情况下,如果使用了不规范的写法,可能会导致错误。最好不要随意省略空格或者其他必要的标记,因为确实有些器会因为这些细节问题而无法正确识别标签。
编程语言
- XHTML标签的自关闭写法的坏处分析
- MySql 5.6.14 Win32位免安装解压缩版配置教程
- JS实现同一DOM元素上onClick事件与onDblClick事件并存
- 响应式表格之固定表头的简单实现
- php+ajax实现图片文件上传功能实例
- 多个jQuery版本共存的处理方案
- Visual Studio 2017 ASP.NET Core开发
- JS使用Date对象实时显示当前系统时间简单示例
- php目录操作实例代码
- javascript获取系统当前时间的方法
- JavaScript中数组继承的简单示例
- 将word转化为swf 如同百度文库般阅读实现思路及代
- 详解闭包解决jQuery中AJAX的外部变量问题
- 3种vue组件的书写形式
- JSP使用自定义标签防止表单重复提交的方法
- 负数与二进制换转方法