Chr*_*rna 7 html standards w3c
我试图在W3C HTML规范中找到答案,但到目前为止还没有运气.
例如,如果我有以下HTML代码:
<body>
<p>
<foo>bar</foo>
</p>
</body>
Run Code Online (Sandbox Code Playgroud)
W3C是否指定用户代理应如何处理此问题?例如,"foo"元素应该被完全忽略吗?是否应忽略"foo"元素但解析内容"bar"?
此外,这样做甚至"合法"吗?
编辑:各位的一些优秀答案!我完全同意嵌入通用XML是不好的做法,除非您可以完全控制用户将使用哪个浏览器.如果要制作这样的标记,我对于实际会发生或将要发生的事情感到非常好奇:-)
HTML规范没有多说,除了:
HTMLUnknownElement接口必须用于未由此规范(或其他适用规范)定义的HTML元素.
这可以通过控制台中的以下JavaScript代码在符合标准的浏览器中进行验证:
Object.prototype.toString.call(document.createElement("foo"));
//-> "[object HTMLUnknownElement]"
Run Code Online (Sandbox Code Playgroud)
但是,某些浏览器要么还没有遵循此规范.例如,Chrome 13给出[object HTMLElement],IE 8给出[object HTMLGenericElement](IE 9是正确的).
据我所知,所有浏览器都将解析<foo>为元素,但默认样式和行为不保证是相同的.在哪里HTMLUnknownElement实现并遵循规范,它应该直接从,HTMLElement并因此具有在其他元素上找到的许多默认属性.
请注意,当您的标记中包含非标准元素时,您的HTML将无法验证.还值得一提的是,搜索引擎爬虫,屏幕阅读器和其他软件将无法从这些元素中提取语义含义.
来自 @Andy E 的一些极好的建议。这只是一些附加内容。
HTML5 草案确实定义了如何解析未知元素,但是,它显然并不简单。要查看规则,请参阅http://dev.w3.org/html5/spec/tree-construction.html
请注意,第一个使用这些规则的 Firefox 版本是 FireFox 4,第一个使用这些规则的 IE 版本是 IE 10。旧版本有许多不同且通常非常奇怪的行为。
HTML 没有“合法性”的概念,只有有效性或符合标准的概念。您可以自由决定是否希望您的页面符合任何特定标准。不存在符合任意命名元素使用的 HTML W3C 标准。
通常建议使您的 HTML 符合规范,以避免浏览器和您尚未测试的其他 HTML 使用方出现不可预测的错误。