我正在使用一个基于网络的工具,它使用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()”函数,但这也无效。我知道必须进行一些评估,我缺少什么?
再次感谢!
答案 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
上放了一个链接