Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Как преобразовать строку с тегами в DOM элимент (https://javascript.ru/forum/misc/3418-kak-preobrazovat-stroku-s-tegami-v-dom-ehliment.html)

GOll 17.04.2009 10:20

Как преобразовать строку с тегами в DOM элимент
 
Проблема, есть текст вида
<div><span>text</span><script>alert('qq')</script></div>
Есть ли способ преобразовать эту строку в DOM объект, что бы можно было воспользоватся appendChild для выполнения скрипта? (строка зарание не извесна) :help:

Riim 17.04.2009 10:33

var div = document.createElement('div');
div.innerHTML = str;

теперь с содержимым div можно работать методами DOM.

GOll 17.04.2009 10:42

Цитата:

Сообщение от Riim (Сообщение 16866)
var div = document.createElement('div');
div.innerHTML = str;

теперь с содержимым div можно работать методами DOM.

Я понимаю, что можно использовать document.createElement, но тогда нужно написать скрипт который рекурсивно пробегает по всем элиментам строки и заменяет все на createElement, setAttribute. Получается это эдинственый выход?

Riim 17.04.2009 10:52

Цитата:

Сообщение от GOll
но тогда нужно написать скрипт который рекурсивно пробегает по всем элиментам строки и заменяет все на createElement, setAttribute.

Это сделает браузер за вас.

GOll 17.04.2009 10:58

Цитата:

Сообщение от Riim (Сообщение 16868)
Это сделает браузер за вас.

ОК. Спасибо, попробую :)

goll! 27.04.2009 17:26

В FF работает, в IE нет. Кто знает почему?
var div = document.createElement('div');
div.innerHTML ="<div><span>text</span><script>alert(\'qq\')</script></div>"
document.getElementById('id_10').appendChild(div);

:(

SunnyDay 27.04.2009 19:23

попробуй поставить таймаут на appendChild, потом в innerHTML добавлять теги script без функций - дело бесполезное, ибо скрипты не выполнятся.

vladkras 07.04.2010 10:39

этот способ совершенно точно не работает в ИЕ, на хабре даже есть статья разработчика innerHTML, который объясняет почему
(надо отметить, что в FF все работает прекрасно)


Часовой пояс GMT +3, время: 19:30.