基本的にHTMLタグを含むテキストがありますが、HTML以外のエンコード文字も含まれています。Javascriptでタグ自体をエンコードせずにhtmlタグを持つ可能性のあるテキストをHTMLでエンコードする方法
var doc = window.document.implementation.createDocument
('http://www.w3.org/1999/xhtml', 'html', null);
var text = '<head><script>somejs</script>' +
'<script>var x = 7; var y = 5; var foo = x < y;</script>' +
'</head><body></body>');
テキストを要素innerHTML属性に設定したいとします。なぜなら、xとyの間の不等号のDOM例外11:私はちょうど
doc.getElementsByTagName('html')[0].innerHTML = text;
を行う場合、これはINVALID_STATE_ERRが発生します。私は、変数テキストをhtmlEncode場合
しかし、私は
<head><script>somejs</script><script>var x = 7; var y = 5; var foo = x < y;</script></head><body></body>
を取得し、したがって、私は、私はそのinnerHTMLプロパティが設定された後、必要に応じて要素が動作するために必要なすべてのタグを失います。タグ自体をエンコードすることなく、文字列内のすべてのタグの内容をhtmlencodeする標準的な方法はありますか?
あなたの結果を得るには 'escape'と' unescape'を使います。 –
残念ながら、それは文字列全体をエスケープするので、もし私がdoc.getElementsByTagName( 'script')のようなものをやりたいのであれば、スクリプトタグを構成する< and >がエスケープされているので何も得られません。 – asutherland