动态重新呈现Javascript代码

时间:2010-11-19 19:53:50

标签: javascript jquery dom

我正在使用一个基于网络的工具,它使用Javascript来绘制漂亮的东西,比如地图。我正在编写一个编辑器,我已经实现了一种方法,让人们编写JavaScript代码,然后在线更新渲染(我知道有任何类型的JavaScript eval的风险,但暂时请原谅我。) / p>

我能做的事情:

使用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()”函数,但这也无效。我知道必须进行一些评估,我缺少什么?

再次感谢!

3 个答案:

答案 0 :(得分:4)

我认为你应该修改你的工具,而不是执行一堆document.writes()(你可能会调用“渲染”)....它只是生成一个html字符串。如果你想在页面加载“从内部”div中调用它,那么...只需document.write字符串。但是如果要在加载页面后调用它,则需要获取div(通过document.getElementById()等),然后将其innerHTML设置为字符串。

这种方式适用于两种情况。我不知道这是你自己的工具包还是什么,但限制一些东西,以便它必须通过document.write从元素的html中执行,这似乎会大大限制它的用处。

答案 1 :(得分:0)

内联<script>注入不执行代码。请使用eval

如果您需要在iframe中eval,请使用:

iframeDomElement.contentWindow.eval(code);

答案 2 :(得分:0)

你可以这样做我在jsfiddle

上放了一个链接

take a look