2012-02-19 3 views
0

У меня есть элемент управления на веб-странице, которая выполняет функцию обратного вызова при внесении депозита.Запуск HTML/Javascript динамически

В бэкэнд пользователь может добавить скрипт, изображения, фреймы и т. Д., И моя программа создаст функцию javascript с тем же именем, что и обратный вызов депозита управления, который выполняет фрагменты кода, введенного пользователем в бэкэнд (скрипт, iframe, html и т. д.).

Функция должна запускать все части HTML/Javascript, которые клиент ввел в CMS. Я заранее не знаю, что вводит пользователь, это может быть сценарий или изображение или что-то еще.

У меня возникли проблемы с запуском фрагментов HTML/Javascript.

1) Я не могу создать элемент сценария и добавить его в DOM, потому что это может быть образ или что-то еще.

2) document.write работает, но он удаляет страницу.

3) Я не могу использовать innerHTML, все работало помимо скриптов, которые я добавил динамически.

4) Я не могу использовать textNode, потому что он не запускает скрипты, когда я добавляю их в DOM.

Каждый раз, когда я добавляю его динамически, я получаю фактический код, напечатанный в строке вместо кода.

Может ли кто-нибудь помочь?

Спасибо.

p.s.

Вот пример некоторых HTML, если я мог бы получить эту работу, где TrackingCode может быть изображение или сценарий, то, что мой ответ:

<head> 

<script type='text/javascript'> 

function test(pixelData){ 

var body= document.getElementsByTagName('body')[0]; 

var trackingCode = '&lt;script type=\'text/javascript\'&gt;alert(\'[hi]\');&lt;/script&gt;'; 

var div = document.createElement('div') 

trackingCode = trackingCode.replace(/&gt;/g,'>').replace(/&lt;/g,'<'); 
div.innerText = trackingCode; 

document.documentElement.firstChild.appendChild(div); 

body.appendChild(div); 


} 

</script> 

</head> 
<body> 
<script type="text/javascript"> 
test(); 
</script> 
<div id='whatever'> 

</div> 
</body> 

ответ

0

Не уверен, что проблема с innerHTML, делать вы видите, что скрипт, который вы вводите, отображается как текст или он игнорируется?

Попробуйте использовать код = escape (код), прежде чем вставлять его внутри элемента.

+0

Сценарий отображается как текст. Когда я избежал строки javascript, он вставлял его в виде закодированного текста, но не запускал его. – Eitan

Смежные вопросы