我可以在输入元素中使用自闭标签吗?

时间:2017-10-09 21:50:03

标签: html

<input>没有任何子元素,所以在我看来正确的语法是<input/>。现代浏览器是否支持此功能?

Chrome中的快速测试似乎是Chrome将<input/>转换为<input>。所有浏览器都这样做吗?

3 个答案:

答案 0 :(得分:1)

The HTML specification状态并通过示例清楚地显示正确的语法为<input>。虽然<input/>被允许,并且被称为void element,但结尾斜线没有任何意义,它什么也没做,浏览器被指示忽略它。

如果您担心浏览器将如何处理它,那么最好的建议就是按照规范要求做的事情,并始终使用指定且始终有效的<input>

答案 1 :(得分:1)

WHATWG规范要求现代浏览器支持void元素,尽管规范的主编辑明显反对调用文档XML(包括自闭元素),如果它没有提供XML mime类型。

Chrome和Firefox通过删除斜杠重写了无效标记,但Microsoft Edge没有。

https://www.w3.org/TR/xhtml11/的规范从2010年开始陈旧。官方的生活HTML规范包括WHATWG所称的内容&#34; the XML syntax&#34; HTML5,所以说开发人员可能不会使用它是不正确的,只要该文档作为application/xhtml+xml提供(虽然这很罕见)并且它具有XML命名空间,例如<html xmlns="http://www.w3.org/1999/xhtml" lang="en">

例如,根据Validator.nu,此文档即使包含void <input/>元素,也是有效的&#34; HTML5 + ARIA + SVG 1.1 + MathML 2.0&#34;:

 <!DOCTYPE html>
 <html xmlns="http://www.w3.org/1999/xhtml" lang="en">
 <head>
 <title>Test</title>
 </head>
 <body>
 <p><input/></p>
 </body>
 </html>

对我来说,这不仅仅是理论或挑剔。我不得不在上一份工作中使用XML语法,否则我的工作就无法完成。当我没有在我的网页模板中包含关闭void元素的斜杠时,我们昂贵的企业级内容管理系统会随意重新排列或删除div。因此很难让我们的CMS在没有 XML语法的情况下生成HTML 。这使我确信坚持删除关闭斜线可能像坚持包括它们一样狂热。

https://stackoverflow.com/a/3558200/1584531

的更多讨论

答案 2 :(得分:0)

不,<input/>(以及<br/><hr/><image/>等) HTML的正确语法(任何版本) )。只是HTML5规范描述了宽松解析器如何忽略/恢复这些XML主义。还有<input />的货物崇拜用法(例如,在元素名称和斜杠字符之间有一个空格,希望浏览器可以比没有它更强大地忽略它。)

这些实践提出了XHTML以及为HTML使用XML工具或同时为HTML和XHTML创作内容的愿望,但在现代HTML中通常不鼓励这样做。