在以下代码段中,<可以在Firefox 37.0.2中按预期方式呈现,我在许多其他现代浏览器中也看到了相同的内容。此textarea规范是否为有效的HTML5?理想情况下不应该&amp ;; 通过转义“ <”
<html>
<textarea>
Hello World <
</textarea>
</html>
HTML解析器如何区分打开标记和“ <”?大多数浏览器都通过猜测来自动处理错误,这是这种情况吗?
我对此感兴趣的原因是,当我们在Web Apps中使用所见即所得的编辑器时-我们主要从编辑器源中保存HTML。当我们将其模板化为前端时,此行为使得从后端HTML引用东西不是强制性的。它可以在没有HTML引用的情况下工作,但是在TinyMCE编辑器的3.5.8版本中,它可能导致不希望的效果,例如冻结/无限循环。
这确实只是猜测。<
在HTML中使用文字的正确方法是使用<
(和>
for >
)。
就是说,这textarea
是特定的,因为它永远不能包含任何其他HTML元素-因此解析器可以确保您的意思是原义<
而不是起始标记。当然,它分解为</textarea>
:)
根据HTML 4规范:
第5.3.2节:
希望在文本中放入“ <”字符的作者应使用“ <”(ASCII十进制60),以避免与标签开头(开始标签打开定界符)混淆。同样,作者应在文本中使用“>”(ASCII十进制62)而不是“>”,以避免旧的用户代理出现问题,当它们出现在带引号的属性值中时,错误地将其视为标记(标记关闭定界符)的结尾。
因此,对于HTML 4而言并不必要,但这仍然是一种好习惯。当然,XHTML和/或HTML 5可能会更严格。
HTML规范实际上在很多方面都是非特定的,这对于确保浏览器以(或多或少)微妙的方式彼此不兼容大有帮助。最好的选择是不要依赖HTML允许的所有内容,而只能依赖非常明确和特定的内容。原因很简单-两种浏览器可以100%完全符合HTML规范,并且仍以使其完全无用的方式处理相同的HTML。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句