javascript - 动态重新渲染 Javascript 代码

标签 javascript jquery dom

我正在使用一个基于网络的工具,它使用 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/

相关文章:

javascript - 并发链式 JavaScript promise

javascript - 将 FOR 循环的结果存储为一个数组(数组仅单独保存每个结果)

javascript - Microsoft Edge 扩展,如何操作 popup.html DOM

java - 使用java获取XML文件中的所有标签

javascript - "place"在此 for 循环中意味着什么

javascript - 在之前的所有动画播放完毕后,我应该如何暂停 SVG 动画以保留静态图像?

javascript - 从jquery获取httpreferrer的正确方法

javascript - 在 Bootstrap 3 SlideDown() 隐藏元素上有问题

javascript - 如何根据屏幕尺寸使用 jQuery 隐藏 div

node.js - 服务器端 DOM 操作技术(Java 与 Node)