基本上我有一些文字可能包含HTML標籤,但也可能包含非HTML編碼字符。我如何HTML編碼可能有html標籤的文本,而不使用Javascript編碼標籤本身
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屬性。如果我只是做
doc.getElementsByTagName('html')[0].innerHTML = text;
這將導致一個INVALID_STATE_ERR:因爲X和Y之間的小於號的DOM異常11。
但是,如果我的HTMLEncode可變文本,我得到
<head><script>somejs</script><script>var x = 7; var y = 5; var foo = x < y;</script></head><body></body>
就這樣我失去了我需要的元素表現得所需,一旦它的innerHTML已設置的所有標籤。是否有任何標準的方法來對字符串中所有標籤的內容進行編碼,而無需對標籤本身進行編碼?
使用'escape'和'unescape'來得到你的結果。 – 2012-02-02 20:53:14
不幸的是,如果我然後想要做一些像doc.getElementsByTagName('腳本')的東西,我不會得到任何東西,因爲組成腳本標籤的< and >已經被轉義了。 – asutherland 2012-02-02 20:59:44