我有一个div标签,它通过ajax调用填充脚本,但脚本不会执行。
有没有办法让脚本执行?
答案 0 :(得分:10)
如果您使用jQuery的.html
方法,它会解析脚本标记并将其删除:
$("div").html('<script type="text/javascript">alert("This should work")</script>');
如果jQuery不是一个选项,您可以使用(1)正则表达式自己编写,或者(2)解析DOM树并查找脚本标记。 (#2是jQuery如何做到的)
答案 1 :(得分:3)
将内容与代码分开始终是个好主意。通过插入<script>
标记,通过AJAX和代码加载内容。如果您使用的是jQuery,请使用$.getScript()
动态加载脚本。
答案 2 :(得分:2)
我想,你正在将脚本标签直接写入innerHTML
这不起作用。
document.body.innerHTML+="<script>alert(1)</scr"+"ipt>";
你必须使用像这样的DOM函数编写
var tag = document.createElement("script");
tag.innerHTML="alert(1)";
document.body.appendChild(tag); //can be append to any object other than body
或更好地使用jQuery
答案 3 :(得分:0)
如果设置div的innerHtml,则应执行脚本标记。我使用$(“#divid”)。load()来加载动态内容,脚本标签执行。
如果使用简单的javascript无法解决问题,请尝试使用JQuery。