使用JavaScript清理HTML
Cleaning HTML using JavaScript
在我正在开发的应用程序中,用户在文本框中输入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
这个片段的问题是,如果内容是<TD>Text</TD>
,我得到的结果是Text
,因为在DIV
中不能有TD
。
在所有情况下,是否有获得有效内容的修复?
使用DOM进行此操作的问题是,您并不真正想要完全纠正的html,因为您添加了允许html为片段的条件。你希望一些格式错误的html得到纠正,而另一些则不需要。
在谷歌上搜索了一下,出现了这个jQuery插件:http://www.davidpirek.com/blog/html-beautifier-jquery-plugin
但我不能保证。
我可能会同意Graham的建议,并建议使用HTML Tidy,因为它既成熟又快速,即使你必须等待响应。
最好的解决方案是将HTML字符串传递给运行HTML Tidy的服务器页面,然后返回"干净"版本。恐怕我不知道有什么健壮的、只针对客户端的解决方案。
编辑:一个便宜的解决方案是使用DOM本身,或者使用jQuery更快:
var input='<div><td>foo</td>';
var output = $('<div>'+html+'</div>').html(); //=> '<div>foo</div>'
这不会清除所有错误,但对您来说已经足够了。
相关文章:
- 可以't让我的if语句处理js中的html表单输入
- 如何设置html元素填充的动画
- 使用JS如何动态更改显示的html文件中的文本背景颜色
- 如何将HTML id分配给元素,以及如何将JavaScript应用于元素
- 清理HTML输入值
- d3.js 中的 HTML 工具提示清理
- Javascript - 清理特定的 html 元素
- TinyMCE 4禁用清理html
- 使用 TinyMCE 4 或 HTMLPurifier 清理 HTML
- 使用jQuery面临“html”清理挑战
- 在引导类型中使用 HTML - 如何清理文本输入框的 html
- 清理来自其他来源的html元素
- 如何在我的所见即所得编辑器中清理粘贴后的HTML
- 使用JavaScript清理HTML
- 清理用户提交的HTML,但保持安全嵌入的iframe
- 使用Javascript或jQuery清理所见即所得编辑器的HTML输出
- 如何清理HTML/XML
- HTML dom元素ckeditor标签清理
- 我的编辑器的HTML清理
- 清理稍后将出现在HTML中的输入