В основном у меня есть текст, который может содержать теги 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 элементов.Если я просто сделаю
doc.getElementsByTagName('html')[0].innerHTML = text;
Это вызовет исключение INVALID_STATE_ERR: DOM 11 из-за знака «меньше» между x и y.
Однако, если я htmlEncode, то текст переменной получится
<head><script>somejs</script><script>var x = 7; var y = 5; var foo = x < y;</script></head><body></body>
И, таким образом, я теряю все теги, которые нужны мне для того, чтобы элемент вел себя так, как хотелось бы, после того, как его innerHTML был установлен.Есть ли какой-либо стандартный способ htmlencode содержимого всех тегов в строке без кодирования самих тегов?