Ami*_*mit 5 html javascript dom html-parsing
在我正在开发的应用程序中,用户在文本框中输入HTML,以编辑其页面上的元素.在此阶段,用户可以添加任何类型的内容,甚至是破坏的HTML和一些文本节点.
为了确保我得到一些干净的代码,我这样做
var s = document.createElement('div');
s.innerHTML = content;
// loop over each node in s, and if text node is found, wrap in span.
content = s.innerHTML
Run Code Online (Sandbox Code Playgroud)
这个片段的问题是内容是a <TD>Text</TD>,我得到的结果是Text,因为不能有TDa DIV.
在所有情况下,是否有修复方法可以获得有效内容?
最好的解决方案是将 HTML 字符串传递到运行HTML Tidy的服务器页面,然后该页面将返回“干净”版本。恐怕我不知道有任何强大的、仅限客户端的解决方案。
编辑:一种廉价的解决方案是使用 DOM 本身,或者使用 jQuery 更快:
var input='<div><td>foo</td>';
var output = $('<div>'+html+'</div>').html(); //=> '<div>foo</div>'
Run Code Online (Sandbox Code Playgroud)
这不会清除所有错误,但对您来说可能已经足够了。