Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
XHTML中所有有效的自动关闭元素(由主要浏览器实现)是什么?_Html_Xhtml_Browser_Cross Browser - Fatal编程技术网

XHTML中所有有效的自动关闭元素(由主要浏览器实现)是什么?

XHTML中所有有效的自动关闭元素(由主要浏览器实现)是什么?,html,xhtml,browser,cross-browser,Html,Xhtml,Browser,Cross Browser,XHTML(由主要浏览器实现)中所有有效的自动关闭元素(例如)是什么 我知道XHTML在技术上允许任何元素自关闭,但我正在寻找所有主流浏览器支持的那些元素的列表。有关自动关闭元件引起的一些问题的示例,请参见。是另一个问题,您应该看一下,它们都列出了。以下是对所有主要问题的快速回顾: <br /> <hr /> <img /> <input /> 来自: 那么和呢?为什么他们不在名单上 根据经验,不要自行关闭任何要包含内容的元素,因为它迟

XHTML(由主要浏览器实现)中所有有效的自动关闭元素(例如
)是什么


我知道XHTML在技术上允许任何元素自关闭,但我正在寻找所有主流浏览器支持的那些元素的列表。有关自动关闭元件引起的一些问题的示例,请参见。


是另一个问题,您应该看一下,它们都列出了。以下是对所有主要问题的快速回顾:

<br />
<hr />
<img />
<input />


来自:




那么
呢?为什么他们不在名单上

根据经验,不要自行关闭任何要包含内容的元素,因为它迟早会导致浏览器出现问题


自然自动关闭的那些,如

,应该是显而易见的。那些不是。。。只是不要自行关闭它们

在这个主题中需要非常小心的一个元素是
元素。如果您有一个外部源文件,当您自行关闭它时,它将导致问题。试试看:

<!-- this will not consistently work in all browsers! -->
<script type="text/javascript" src="external.js" />


这将在Firefox中起作用,但至少在IE6中会中断。我知道,因为我在过度热情地自我关闭我看到的每一个元素时遇到了这种情况;-)

IE的另一个自动关闭标记问题是title元素。当IE(刚刚在IE7中尝试过)看到这一点时,它会向用户显示一个空白页面。然而,你“查看源”,一切都在那里

<title/>


我最初是在XSLT生成自动关闭标记时看到这一点的。

每个支持XHTML(Firefox、Opera、Safari)的浏览器都在每个元素上支持自动关闭语法



所有这些都可以正常工作。如果他们没有,那么您的HTML中添加了不适当的XHTML DOCTYPE

DOCTYPE不会更改文档的解释方式

:

HTML工作组讨论了这个问题:目的是允许旧的 (仅限HTML)浏览器通过以下方式接受XHTML 1.0文档 指南,并将其作为text/html提供。因此,文件作为 text/html应该被视为html,而不是XHTML

这是一个非常常见的陷阱,因为W3C验证器在很大程度上忽略了这一规则,但浏览器严格遵循这一规则。阅读 从WebKit博客:

事实上,互联网上绝大多数所谓的XHTML文档都被用作
text/html
。这意味着它们根本不是XHTML,而是在HTML解析器的错误处理中得到的无效HTML。网络上所有那些“有效的XHTML1.0!”链接实际上都在说“无效的HTML4.01!”


要测试XHTML的DOCTYPE是否为真实的XHTML或无效的HTML,请将以下内容放入文档中:

<span style="color:green"><span style="color:red"/> 
 If it's red, it's HTML. Green is XHTML.
</span>

如果是红色,则为HTML。绿色是XHTML。
它进行了验证,并且在真正的XHTML中工作得非常完美(请参见:vs)。如果你不相信自己的眼睛(或者不知道如何设置MIME类型),请通过打开页面

另一种检查方法是在Firefox中查看源代码。当斜线无效时,它将以红色突出显示斜线

在HTML5/XHTML5中,这一点没有改变,而且区别更加明显,因为您甚至没有额外的
DOCTYPE
<代码>内容类型
为王


为了记录在案,XHTML规范允许任何元素通过将XHTML设置为[emphasis mine]来自动关闭

空元素标记可用于任何没有内容的元素,无论是否使用关键字Empty声明

它还明确显示在:

空元素必须具有结束标记,或者开始标记必须以
/>
结束。例如,



自动关闭语法适用于application/xhtml+xml中的所有元素。text/html中的任何元素都不支持它,但HTML4中的“empty”或HTML5中的“void”元素无论如何都不带结束标记,因此如果在这些元素上加一个斜杠,它看起来就好像支持自动关闭语法一样。

上次我检查时,以下是HTML5中列出的empty/void元素

对作者有效:区域、基础、br、col、命令、嵌入、事件源、hr、img、输入、链接、元、参数、源

对于作者无效:basefont、bgsound、帧、间隔符、wbr

除了HTML5中的一些新功能外,这应该让您了解在将XHTML作为文本/html提供时可能支持的功能。(只需通过检查生成的DOM来测试它们。)


对于用作application/XHTML+xml(使之成为xml)的XHTML,xml规则适用,任何元素都可以是空的(即使XHTML DTD不能表达这一点)。

希望这能帮助某些人:

<base />
<basefont />
<frame />
<link />
<meta />

<area />
<br />
<col />
<hr />
<img />
<input />
<param />




我不打算在这方面做得太多,特别是因为我编写的大多数页面都是生成的,或者标签确实有内容。在让它们自动关闭时给我带来麻烦的只有两个:

对于这一点,我只是简单地求助于总是给它一个单独的结束标记,因为一旦它出现在
中,它就不会让你的代码变得更混乱

这是我最近遇到的一个大问题。多年来,当脚本来自外部源时,我总是使用self-closing
标记。但我最近开始接收关于空表单的JavaScript错误消息。经过几天的研究,我发现问题在于(据推测)浏览器从未到达
标记,因为它没有意识到这是
标记的结尾。所以,当我把它做成单独的
标记时,一切都正常了。为什么我在同一个浏览器上创建的不同页面不同,我不知道
<base />
<basefont />
<frame />
<link />
<meta />

<area />
<br />
<col />
<hr />
<img />
<input />
<param />