2011-12-21 65 views
5

在我正在開發的應用程序中,用戶在文本框中輸入HTML以編輯其頁面上的元素。在這個階段,用戶可以添加任何類型的內容,甚至是破碎的HTML和一些文本節點。使用JavaScript清理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,因爲不可能有一個TDDIV

在所有情況下是否有修復以獲取有效內容?

回答

0

最好的解決方案是將您的HTML字符串傳遞到運行HTML Tidy的服務器頁面,然後返回「乾淨」版本。我不知道任何強大的客戶端解決方案,我害怕。

編輯:一個廉價的解決方案是使用DOM本身,或者用jQuery更快:

var input='<div><td>foo</td>'; 
var output = $('<div>'+html+'</div>').html(); //=> '<div>foo</div>' 

這不會清理所有的錯誤,但可能是夠你。

1

使用DOM做這件事的問題是,你並不是真的想要完全糾正的HTML,因爲你添加的條件,允許HTML是一個片段。你想修正一些格式不正確的HTML,有些則不是。

google搜索了一下扔了這個jQuery插件:http://www.davidpirek.com/blog/html-beautifier-jquery-plugin

,但我不能保證它。

我可能會同意格雷厄姆,並建議HTML Tidy,因爲它是成熟和快速的,即使你必須等待響應。