我正在使用一个基于网络的工具,它使用 Javascript 来绘制漂亮的东西,比如 map 。我正在为它制作一个编辑器,并且我已经实现了一种方法,让人们可以编写 JavaScript 代码,然后在线更新渲染(我知道进行任何类型的 JavaScript eval 操作都是有风险的,但请暂时原谅我)。
我能做的事情:
使用 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()”函数,但这也不起作用。我知道必须进行一些评估,我错过了什么?
再次感谢!
最佳答案
我认为你应该修改你的工具,这样它就不会执行一堆 document.writes() (你对“render”的调用可能会这样做)......它只是生成一个 html 字符串。如果你想在页面加载时“从内部”调用它,很好......只需 document.write 字符串。但如果你想在页面加载后调用它,你需要获取div(通过document.getElementById()等),然后将其innerHTML设置为字符串。
这样它就可以在两种情况下工作。我不知道这是你自己的工具包还是什么,但是限制某些东西,使其必须通过 document.write 从元素的 html 中执行,似乎会大大限制它的实用性。
关于javascript - 动态重新渲染 Javascript 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4228832/