<input>
没有任何子元素,所以在我看来正确的语法是<input/>
。现代浏览器是否支持此功能?
Chrome中的快速测试似乎是Chrome将<input/>
转换为<input>
。所有浏览器都这样做吗?
答案 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 。这使我确信坚持删除关闭斜线可能像坚持包括它们一样狂热。
的更多讨论答案 2 :(得分:0)
不,<input/>
(以及<br/>
,<hr/>
,<image/>
等)不 HTML的正确语法(任何版本) )。只是HTML5规范描述了宽松解析器如何忽略/恢复这些XML主义。还有<input />
的货物崇拜用法(例如,在元素名称和斜杠字符之间有一个空格,希望浏览器可以比没有它更强大地忽略它。)
这些实践提出了XHTML以及为HTML使用XML工具或同时为HTML和XHTML创作内容的愿望,但在现代HTML中通常不鼓励这样做。