有没有办法从html内容中提取有效脚本并使用jQuery执行它?

时间:2010-09-29 00:29:21

标签: javascript jquery html eval

说我有这样的事情:

<p id="script">$("p").css("color", "red");</p>

有没有办法选择标签中包含的脚本并使用jQuery执行它?在这种情况下,脚本

$("p").css("color", "red");
将执行

,然后使其自身在段落标记内以红色字体颜色呈现。我可以完美地选择文本,但还没有找到实际执行它的方法。我不想要其他解决方案 - 我知道它们,我只是想弄清楚这个具体案例是否可行,如果是的话,如何。感谢。

2 个答案:

答案 0 :(得分:4)

eval($("#script").text())

由于它使用text(),因此它应该删除任何HTML,以便您可以根据需要将任何代码高亮显示应用于代码。

例如,如果您使用StackOverflow代码荧光笔并想要选择代码,text()将返回您所期望的内容:

eval($("#script").text())

html()可能会返回

<span class="kwd">eval</span><span class="pun">(</span><span class="pln">$</span><span class="pun">(</span><span class="str">"p #script"</span><span class="pun">).</span><span class="pln">text</span><span class="pun">())</span><span class="pln"><br></span>

显然无法评估。

如果您不打算执行任何代码突出显示,那么这不是问题。

答案 1 :(得分:1)

您可以在其上拨打eval(),但我会重新评估您的方法,如下所示:

eval($("#script").html());

You can test it out here。这只是说明可以完成,但你应该尽量避免这种情况,至少它有安全性和性能问题。