Мне передают HTML как строку.Моя цель состоит в том, чтобы создать новый документ из html, который имеет все соответствующие узлы, чтобы я мог делать такие вещи, как вызов doc.getElementsByTagName в создаваемом мной документе, и заставить его работать как положено.Пример моего кода приведен здесь.
var doc = window.document.implementation.createDocument
('http://www.w3.org/1999/xhtml', 'html', null);
doc.getElementsByTagName('html')[0].innerHTML =
'<head><script>somejs</script>' +
'<script>var x = 5; var y = 2; var foo = x + y;</script>' +
'</head><body></body>';
var scripts = doc.getElementsByTagName('script');
console.log(scripts[0] + " code = " + scripts[0].innerHTML);
У меня возникают следующие проблемы:
- Если что-то внутри тега скрипта содержит символ типа <(например, в приведенном выше примерев операторе "var foo = x + y;" измените символ + на символ <), я получаю исключение INVALID_STATE_ERR: DOM 11. </li>
- Даже если в теге скрипта ничего не используются такие символы, при запускевышеупомянутый я получаю вывод "[элемент объекта] code = undefined"
Итак, мои вопросы:
A.Как мне работать с такими символами, как <, которые создают исключение DOM 11, когда я пытаюсь использовать их во всем, что я устанавливаю innerHTML на B. Как мне заставить документ правильно анализировать теги сценария и помещать их код в их атрибут innerHTML так, чтобыПозже я смогу прочитать его. </p>
РЕДАКТИРОВАТЬ: Как отметил Райан П., этот код на самом деле работает в FF.Так что, если кто-нибудь сможет помочь мне заставить его работать в Chrome, это будет очень ценно!