尝试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); (必须执行的脚本)...我该怎么办?这不正确吗?
答案 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(); });