Рендеринг кода Javascript динамически - PullRequest
0 голосов
/ 19 ноября 2010

Я использую веб-инструмент, который использует Javascript для рисования красивых вещей, таких как карты.Я делаю для него редактор, и я реализовал способ, позволяющий людям писать код JavaScript, а затем обновлять рендеринг в Интернете (я знаю, что рискованно иметь какую-то JavaScript-версию, но простите меня на данный момент).

Что я смог сделать:

Используя jQuery, замените старый JavaScript на новый:

<div id="renderarea">
<script type="text/javascript">
    /* Special code that actually needs to be here, not like in the head.
       Renders view with a function like render() */
</script>
</div>

После волшебства я получаю (виделс Firebug)

<div id="renderarea">
<script type="text/javascript">
    /* New code, but it doesn't run at all */
</script>
</div>

Я попытался снова запустить функцию render (), но это тоже не сработало.Я знаю, что должен произойти какой-то eval, чего мне не хватает?

Еще раз спасибо!

Ответы [ 3 ]

4 голосов
/ 20 ноября 2010

Я думаю, что вы должны изменить свой инструмент так, чтобы он, а не выполнял кучу document.writes () (что, по-видимому, делает ваш вызов "render") ... он просто создает строку html. Если вы хотите вызвать его "изнутри" div при загрузке страницы, хорошо ... просто document.write строки. Но если вы хотите вызвать его после загрузки страницы, вам нужно получить div (через document.getElementById () или тому подобное), а затем установить его innerHTML в строку.

Таким образом, это будет работать в обоих контекстах. Я не знаю, является ли это вашим собственным инструментарием или чем-то другим, но ограничивая что-то, чтобы он выполнялся из html-элемента через document.write, кажется, что это значительно ограничит его полезность.

0 голосов
/ 20 ноября 2010

Вы можете сделать что-то вроде этого, я поставил ссылку на jsfiddle

посмотрите

0 голосов
/ 19 ноября 2010

Inline <script> Внедрение не выполняет код.Для этого используйте eval.

Если вам нужно eval внутри фрейма, используйте:

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