2009-05-20 9 views
0

私たちのチームでは、DOMに追加する前に文字列を消毒する必要があるという考えを思いつきました。 setAttributeで使用する場合は二重引用符が問題になり、ノードのコンテンツに追加された場合は<と>になります。DOMに追加する前に文字列の衛生管理を行う必要がありますか?

最初のテストでは、何か異なることが示されました。 innerHTMLを使用してノードのコンテンツを設定しています。これは、すべての安全でない文字をそれ自身でエスケープします。しかしsetAttributeでもエスケープします<と>

私はグーグルで何も見つかりませんでしたので、これはいつものケースですか?私はそこに失敗するブラウザがあるかどうかわかりません。

答えて

2

innerHTMLは要素内のHTMLを編集しており、DOMノードを生成しています。通常の規則に従ってHTMLを記述する必要があります(たとえば、名前のない文字が続く場合を除き、<文字は使用できません)。ブラウザは通常のエラー回復を実行します。

あなたのinnerHTMLの経験がなぜ違うのか分かりません。

createTextNode、setAttributeなどDOMを直接編集します。 HTMLは関係していないので、HTMLで特別な意味を持つ文字を扱う必要はありません。

+0

私はもう一度見て、私たちはinnerHTMLを使用していません。 nodeValueを設定できる単一のノードがあるので。そして、私はあなたの答えは、すべてのDOMメソッドは、< and >はちょうど正しく処理されて離れて動作することをicludesだと思う。 –

関連する問題