Javascript jQuery.load()是否在<;之后加载;脚本>;内容是否已加载?
两个问题:Javascript jQuery.load()是否在<;之后加载;脚本>;内容是否已加载?,javascript,jquery,load,Javascript,Jquery,Load,两个问题: jQuery.load()是否在的内容完全下载后运行 如果在这种情况下,文档中有一个将动态注入另一个,那么load()是在下载第二个脚本的内容后运行,还是在加载原始的非动态内容后运行 谢谢 问题的例子如下: <html> <head> <script src="myscrip1.js"></script> <script> $(document).load( myscript2.functionA ); </scri
jQuery.load()
是否在
的内容完全下载后运行
将动态注入另一个
,那么load()
是在下载第二个脚本的内容后运行,还是在加载原始的非动态内容后运行问题的例子如下:
<html>
<head>
<script src="myscrip1.js"></script>
<script>
$(document).load( myscript2.functionA );
</script>
</head>
</html>
$(document).load(myscript2.functa);
其中myscript.js将向dom中注入myscript2.js。
其中myscript2.js包含函数myscript2.function
显然,我想在myscript2.js完全加载后运行myscript2.function
:)如果将
加载
事件处理程序放入标准的文档就绪
事件处理程序包装中,它将确保首先加载外部脚本。你应该考虑这个标准的做法。解决方案很简单:
<script src="myscrip1.js"></script>
<script>
$(document).ready(function() {
$(document).load( myscript2.functionA );
});
</script>
$(文档).ready(函数(){
$(document).load(myscript2.functa);
});
当初始HTML中引用的所有资源都已下载(或出现错误时超时)时,将触发document ready事件。如果您动态地注入对另一个脚本的引用(如facebook api、google analytics等),那么它的就绪性与document ready事件的关系是未定义的
如果要检查外部脚本是否已准备就绪,可以检查它创建的对象是否已准备就绪
var startafterjqueryladed=函数(){
if(jQuery的类型==“未定义”){
setTimeout(startAfterJqueryLoaded,100);
返回;
}
//jQuery已经准备好了,做点什么吧
}
startAfterJqueryLoaded();
或者,如果您可以控制动态注入的脚本,您可以建立一个全局函数,它将在准备好时调用该函数
<script type="text/javascript">
window.dynamicScriptIsReady = function(){
// do something
}
</script>
// Dynamic.js
// ...Setup whatever
window.dynamicScriptIsReady();
window.dynamicScriptIsReady=函数(){
//做点什么
}
//Dynamic.js
//…设置什么
window.dynamicScriptIsReady();
请提供一个示例来帮助解释您所说的内容。您如何调用.load()?根据我的经验,它将在被称为的地方运行。因此,如果在加载动态脚本之前调用.load(),它将在加载动态脚本之前运行,但是,如果在加载动态脚本之后调用它,它应该在加载动态脚本之后运行。这不起作用。因为myscript2.js将在$(document.ready)之后运行$文件(加载)。因此,myscript2.function将是未定义的。原因是$document.ready将在myscript1就绪并加载后执行,这是原始HTML文档中的代码。动态脚本代码不会是ready&load将处理的HTML文档的一部分。
<script type="text/javascript">
window.dynamicScriptIsReady = function(){
// do something
}
</script>
// Dynamic.js
// ...Setup whatever
window.dynamicScriptIsReady();