Запуск HTML / Javascript динамически - PullRequest
0 голосов
/ 19 февраля 2012

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

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

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

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

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

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

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

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

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

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

Спасибо.

приписка

Вот пример некоторого 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>

1 Ответ

0 голосов
/ 19 февраля 2012

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...