Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 17.04.2009, 10:20
Интересующийся
Отправить личное сообщение для GOll Посмотреть профиль Найти все сообщения от GOll
 
Регистрация: 27.06.2008
Сообщений: 29

Как преобразовать строку с тегами в DOM элимент
Проблема, есть текст вида
<div><span>text</span><script>alert('qq')</script></div>
Есть ли способ преобразовать эту строку в DOM объект, что бы можно было воспользоватся appendChild для выполнения скрипта? (строка зарание не извесна)
Ответить с цитированием
  #2 (permalink)  
Старый 17.04.2009, 10:33
Аватар для Riim
Рассеянный профессор
Отправить личное сообщение для Riim Посмотреть профиль Найти все сообщения от Riim
 
Регистрация: 06.04.2009
Сообщений: 2,379

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

теперь с содержимым div можно работать методами DOM.
Ответить с цитированием
  #3 (permalink)  
Старый 17.04.2009, 10:42
Интересующийся
Отправить личное сообщение для GOll Посмотреть профиль Найти все сообщения от GOll
 
Регистрация: 27.06.2008
Сообщений: 29

Сообщение от Riim Посмотреть сообщение
var div = document.createElement('div');
div.innerHTML = str;

теперь с содержимым div можно работать методами DOM.
Я понимаю, что можно использовать document.createElement, но тогда нужно написать скрипт который рекурсивно пробегает по всем элиментам строки и заменяет все на createElement, setAttribute. Получается это эдинственый выход?
Ответить с цитированием
  #4 (permalink)  
Старый 17.04.2009, 10:52
Аватар для Riim
Рассеянный профессор
Отправить личное сообщение для Riim Посмотреть профиль Найти все сообщения от Riim
 
Регистрация: 06.04.2009
Сообщений: 2,379

Сообщение от GOll
но тогда нужно написать скрипт который рекурсивно пробегает по всем элиментам строки и заменяет все на createElement, setAttribute.
Это сделает браузер за вас.
Ответить с цитированием
  #5 (permalink)  
Старый 17.04.2009, 10:58
Интересующийся
Отправить личное сообщение для GOll Посмотреть профиль Найти все сообщения от GOll
 
Регистрация: 27.06.2008
Сообщений: 29

Сообщение от Riim Посмотреть сообщение
Это сделает браузер за вас.
ОК. Спасибо, попробую
Ответить с цитированием
  #6 (permalink)  
Старый 27.04.2009, 17:26
goll!
 
Сообщений: n/a

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

Ответить с цитированием
  #7 (permalink)  
Старый 27.04.2009, 19:23
Кандидат Javascript-наук
Отправить личное сообщение для SunnyDay Посмотреть профиль Найти все сообщения от SunnyDay
 
Регистрация: 22.09.2008
Сообщений: 111

попробуй поставить таймаут на appendChild, потом в innerHTML добавлять теги script без функций - дело бесполезное, ибо скрипты не выполнятся.
Ответить с цитированием
  #8 (permalink)  
Старый 07.04.2010, 10:39
Новичок на форуме
Отправить личное сообщение для vladkras Посмотреть профиль Найти все сообщения от vladkras
 
Регистрация: 07.04.2010
Сообщений: 9

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



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как определить порядковый номер элемента DOM ? dummer jQuery 7 17.01.2014 17:44
Как удалить элемент из дерева DOM dummer jQuery 13 16.01.2011 16:19
DOM vs iframe. Как в ифрейме заменить выделенный текст (его innerHTML)? Бухалыч Events/DOM/Window 4 20.08.2009 14:30
Как определить id дочернего элемента DOM? Motonto Events/DOM/Window 1 09.04.2009 08:13
Как создать строку JSON с переменными? Артем AJAX и COMET 4 01.11.2008 12:12