基本上我有一些文字可能包含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