jQuery.html() - JavaScript代码已执行但已消失

时间:2013-05-12 10:03:16

标签: javascript jquery

我正在开发一个小编辑器来向网站添加小部件(HTML,CSS和Javascript)。

  • 用户在窗口小部件代码中键入字段。
  • 验证时,窗口小部件的代码会添加到页面中。
  • 用户可以编辑代码(从DOM中检索)。

除了我有问题要检索javascript代码。实际上,它执行得很好,但从DOM中消失了。有些东西让我感到惊讶!

我在这里简化了我的问题: HTML代码:

<textarea id="code">
    &lt;script type=&quot;text/javascript&quot;&gt;alert(&quot;code&quot;);&lt;/script&gt;
</textarea>
<div id="target"></div>

Javascript代码:

$("#target").html($("#code").val());
alert($("#target").html());

尝试一下:http://jsfiddle.net/8uhB8/3/

此示例插入javascript代码(一个简单的javascript警报)并尝试检索它。

你有什么想法吗?

谢谢!

2 个答案:

答案 0 :(得分:2)

$("#target").html($("#code").html());
alert($("#target").html());

Fiddle.

由于您使用的是HTML字符,因此在这种情况下需要使用.html()

答案 1 :(得分:2)

这就是.html()的工作方式。它为.innerHTML分配HTML的所有结构部分。但是分配innerHTML不会执行脚本。因此,jQuery将所有脚本从HTML中提取出来,并将它们放在<script>节点中以执行它们。此节点只是临时的,并在.html()完成时删除。但脚本仍在执行。