2012-02-29 66 views
1

我想加载一个外部HTML。另外,外部HTML包含一些JavaScript代码。由于负载功能不会加载这个剧本,我必须使用getScript加入:

<div id="external-content"></div> 

<script type="text/javascript"> 
    $("#external-content").load("external.html #myid", function() { 
    // do something 
    }); 
    $.getScript("external.js"); 
</script> 

这就像一个魅力除非external.js具有尝试访问外部元素$(文件)。就绪命令, html的。在我看来,这个事件被解雇得太早。我也尝试把命令$ .getScript(“external.js”);进入.load回调,但没有成功。请注意,单独external.html并包括external.js直接按照预期工作。

+0

为什么不在网站中加入你的external.js,加载external.html?并发起一个自己的事件,external.js作出反应? – 2012-02-29 16:15:41

回答

0

不幸的是,这是有道理的时间(即这是正确的行为)。标签内的脚本触发external.html的检索,并不等待它返回,它继续前进到external.js的检索。与此同时,“基础”文档仍在加载,可能(实际上可能)会在externa.html被检索之前完成。

所以,你可以运行到定时情况,即:

文件的确是准备好(正在装载external.html不是DOM脚本化是一个条件),external.js被加载并可用,但外部.html尚未完全加载。在存在external.html的元素之前,文档就绪函数将会触发(因为文档已准备就绪!)。

如果您想要继续此方法,可能需要重新调整它,以便您在external.js内部使用on()将委托给基础文档(#myid)的侦听器以查看external.html内部元素上的事件。

相关问题