如何附加将要执行的<script>?</script>

时间:2012-02-24 14:27:07

标签: javascript jquery

尝试this

<a href="#" id="showAlert">Click me</a>
<div id="pasteContent"></div>
​
var elemFunc = '<script>alert("myString");</script>';

$("#showAlert").click(function () {
    $("#pasteContent").html(elemFunc);
});
​

我想做的是附加字符串alert(myString); (必须执行的脚本)...我该怎么办?这不正确吗?

5 个答案:

答案 0 :(得分:5)

/ http://jsfiddle.net/kxALH/3/之前的</script>之前添加反斜杠 您的代码失败,因为</script>被视为您的小提琴脚本的关闭标记。结果,你的第一个小提琴看起来有些奇怪。

注意:如果要执行任意代码字符串,$.globalEval('alert("myString")');可能更适合。

答案 1 :(得分:0)

尝试使用像这样的jquery脚本对象

var elemFunc = $('<script>')
    .attr('type', 'text/javascript')
    .html('alert("myString");');

$("#showAlert").click(function () {
    $("#pasteContent").append(elemFunc);
});

答案 2 :(得分:0)

试试这个:

var elemFunc = '<script>alert("myString");</' + 'script>';

如果您的HTML包含在HTML中

答案 3 :(得分:0)

试试这个:

var s = document.createElement("script");
s.type = "text/javascript";
s.src = "http://somedomain.com/somescript";
$("head").append(s);

请注意,脚本将加载,您可以访问其中的变量,但您不会在DOM中看到实际的标记。

答案 4 :(得分:0)

由于您的行为等同于eval,并且eval是邪恶的,您可以使用外部脚本和$.getScript(),通过ajax加载它......

$.getScript("http://scriptURL.com/script.js", function(){ init(); });