我需要一个可靠的Javascript库/函数来检查HTML片段是否有效,我可以从我的代码中调用。例如,应该检查打开的标签和引号是否关闭,嵌套是否正确等。
我不希望验证失败,因为某些东西不是100%的标准(但是将会工作)。
解决方法
更新:这个答案是有限的 – 请看下面的编辑。
扩大@ kolink的答案,我用:
var checkHTML = function(html) { var doc = document.createElement('div'); doc.innerHTML = html; return ( doc.innerHTML === html ); }
即,我们用HTML创建一个临时div。为了做到这一点,浏览器将基于HTML字符串创建一个DOM树,这可能涉及关闭标签等。
将div的HTML内容与原始HTML进行比较会告诉我们浏览器是否需要更改任何内容。
checkHTML('<a>hell<b>o</b>')
返回false。
checkHTML('<a>hell<b>o</b></a>')
返回true。
编辑:由于@Quentin在下面注意到,由于各种原因,这是非常严格的:即使关闭标记对于该标签是可选的,浏览器通常会修复添加省略的结束标签。例如:
<p>one para <p>second para
…被认为是有效的(因为Ps被允许忽略关闭标签),但是checkHTML将返回false。浏览器也会使标签案例正常化,并改变空格。在决定使用这种方法时,您应该了解这些限制。