6

contentEditableユーザーが HTML を編集できるようにする必要があるdiv があります。

ユーザーがその div 内に書き込む HTML をサニタイズする必要がありますか?

つまり、その div から HTML を取得すると、既にサニタイズされています。たとえば<>、div 内に次のようなものを書き、それを取得すると、&lt;&gt;.

ここでテストしてください: http://jsfiddle.net/mByWT/

私の他の質問は次のとおりです。この動作は標準ですか?すべてのブラウザーで信頼できますか?

編集

これは一般的なパターンであると結論付けることができます。

  • element.innerHTML<エスケープされた HTML を返します -- 、>amdをエスケープしますが、&引用符はエスケープしません
  • element.innerTextelement.textContentエスケープせずにリテラル HTML を返します

これを参照してください:http://jsfiddle.net/2CmjG/

4

2 に答える 2

4

私はあなたが自分自身に答えたと思います:)。innerHTMLcontenteditable div がエンコードされた HTML を返すという事実は、一般的なパターンです。そうしないと、またはまたはその他の HTML 特殊エンティティを入力する<>&nbsp;このエディターが壊れます。

ただし、ブラウザによって異なる結果が生成され、たとえば IE で作成されたデータが Fx では有効ではないというエッジ ケースがあることは確かです。しかし、私は重大なことを観察したことがありません。で指定されたデータをエンコードすることもできませんinnerHTML。これは非常に難しいためです。

于 2012-07-04T07:56:30.447 に答える
1

jQuery は、すべてのブラウザーと互換性があるように構築されています。コードをすべてのブラウザーで使用すると、同じように実行されます。

ただし、文字は javascript を好み、混乱させる可能性があるため、HTML をサニタイズする必要が<あり>ます。HTML をデータベースなどに使用する場合は、HTML をさらにサニタイズする必要があります。

于 2012-07-04T06:04:12.687 に答える