2009-11-25 81 views
8

我有一个div标记,它通过ajax调用来填充脚本,但脚本不执行。通过AJAX加载脚本标记

有没有办法让脚本执行?

+0

DOM函数写有任何代码提供与此相关的问题吗? – miku 2009-11-25 23:13:55

+0

非常模糊的问题。代码和例子。 – mauris 2009-11-25 23:14:27

+0

- 转储到div标签客户端。 – 2009-11-25 23:24:05

回答

11

如果你使用jQuery的.html方法是分析脚本标记和evals它:

$("div").html('<script type="text/javascript">alert("This should work")</script>'); 

如果jQuery是不是一种选择,你可以写自己使用:(1)正则表达式,或( 2)解析出DOM树并找到脚本标签。 (#2是jQuery的是怎么做的)

+0

jQuery虽然需要被触发,并且如果我将其包含在发送回客户端的有效内容中,它将不会运行,因为下载的脚本无法启动。例外:我可以在脚本标记中设置defer标记,IE将运行它,但这只是用户的x%。 – 2009-11-26 13:44:33

+0

@Caleb:你的答案中的代码是做什么的? – Ashwin 2013-05-12 13:43:43

+0

这也是为什么AJAX请求中的脚本标记最终不在响应中的html中的位置的原因。 – Ikke 2013-07-08 12:28:12

0

如果你设置div的innerHtml,脚本标签应该执行。我使用$(“#divid”)。load()加载动态内容并执行脚本标记。

尝试使用JQuery,如果它不使用普通的javascript。

+0

可悲的是,并非如此。 Ajax传递到客户端的有效载荷的html有效载荷中的脚本不会执行。 – 2009-11-26 13:45:16

3

从代码中分离内容总是一个好主意。通过插入<script>标签,通过AJAX和代码加载内容。如果您使用的是jQuery,请使用$.getScript()动态加载脚本。

2

我想,你编写脚本标签到innerHTML的直接

这是行不通的。

document.body.innerHTML+="<script>alert(1)</scr"+"ipt>"; 

您在使用这样的

var tag = document.createElement("script"); 
tag.innerHTML="alert(1)"; 
document.body.appendChild(tag); //can be append to any object other than body 

或更好地利用jQuery

+0

问题在于脚本包含在Ajax载荷中并发送到DIV内的客户端。一旦到达客户端,我就无法启动脚本,因此出现鸡和鸡蛋问题。 – 2009-11-26 13:42:58

+0

嗨,在Ajax的回归中,会有什么样的结果?只是JavaScript代码?或者包含脚本标签?如果只是javascript代码,你可以''eval''或者如果包含脚本标签,你可以在我的文章中使用上面的例子,并用你的div标签更改'document.body',并追加到那里。 – YOU 2009-11-26 14:03:20

+0

,你能否用更多的信息更新你的文章,比如你的网站和更多的解释?因为人们会注意到他们也会发现你目前的问题,rgds – YOU 2009-11-26 14:05:09