<div id="content"></div>
应使用AJAX填充来自PHP文件的数据,包括
<script>
标记。但是,此标签内的脚本未执行。<div id="content"><!-- After AJAX loads the stuff that goes here -->
<script type="text/javascript">
//code
</script>
<!-- More stuff that DOES work here -->
</div>
#1 楼
作为DOM文本插入的JavaScript将不会执行。但是,您可以使用动态脚本模式来实现您的目标。基本思想是将要执行的脚本移到外部文件中,并在收到Ajax响应时创建脚本标签。然后,您设置脚本标签和瞧的src
属性,它将加载并执行外部脚本。这另外一个StackOverflow帖子也可能对您有所帮助:可以将脚本与innerHTML一起插入吗? />
评论
您可以选择所有已加载的脚本并通过eval()函数执行它们:$('#audit-view script')。each(function(index,element){eval(element.innerHTML);})
–Jerzy Gebler
15年8月19日在16:01
绝对应执行添加到页面的Javascript。 (例如jsfiddle.net/wnn5fz3m/1)。问题是为什么有时不这样做?
– NoBugs
15-10-23在1:39
@Chocula我将我的脚本移到了一个单独的文件,但是它仍然无法正常运行,您能帮上忙吗? stackoverflow.com/questions/42941856/…
– Samra
17 Mar 23 '17 at 5:07
仅供参考(@NoBugs给了我一个线索)。我尝试了简单的javascirpt element.innerHTML = zzz和设计工作。然后我尝试使用Jquery $(element).html(zzz)并工作。
– gtryonp
19年11月15日在17:18
#2 楼
我使用了这段代码,它工作正常var arr = MyDiv.getElementsByTagName('script')
for (var n = 0; n < arr.length; n++)
eval(arr[n].innerHTML)//run script inside div
评论
如果您问我,这是一个比公认的更好的答案。这几乎是JavaScript注入。
– Xedret
2013年9月27日19:16在
虽然有用,但这确实不能回答为什么脚本无法运行的问题。例如,请参见jsfiddle.net/fkqmcaz7和jsfiddle.net/wnn5fz3m/1,它绝对应该运行,并且我找不到它不起作用的简化情况。
– NoBugs
15年11月8日在8:41
@NaoiseGolden OP确实是在询问脚本的执行情况,所以我认为这里还可以。 :-)
–今天轮到
16年1月1日在1:50
强烈不建议使用Eval()。看到这个-stackoverflow.com/questions/9107847/…
–国王
18 Mar 9 '18 at 14:03
#3 楼
如果您通过Ajax在div中加载脚本块,如下所示:<div id="content">
<script type="text/javascript">
function myFunction() {
//do something
}
myFunction();
</script>
</div>
...它只是更新页面的DOM,myFunction()不一定会得到叫。
您可以使用Ajax回调方法(例如jQuery的ajax()方法中的方法)来定义在请求完成时要执行的操作。
您正在做的事情不同于从一开始就加载包含JavaScript的页面(确实会执行)。
如何使用提取一些内容后,成功进行回调和错误回调:
$.ajax({
type: 'GET',
url: 'response.php',
timeout: 2000,
success: function(data) {
$("#content").html(data);
myFunction();
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
alert("error retrieving content");
}
另一个快速而肮脏的方法是使用eval()执行作为DOM插入的任何脚本代码。文本,如果您不想使用jQuery或其他库。
评论
使用jQuery的回调,如何“执行”新
评论
您如何加载div?根据您使用的库,通常可以控制是否只希望在ajax加载后执行脚本。在window.onload之后,我创建一个XMTHttpRequest对象来请求另一个(php)页面,该页面包含div的内容,包括一个脚本。我正在使用普通JS来执行此操作,没有任何库(除了我自己的哈哈)