Javascript 带有$(window.load)(function()的Lab.js和jQuery过早启动
我使用lab.js2.0.3并行加载脚本。 问题是,$window.load部分在10次中有1次触发得太早,而$document.ready部分工作正常 例如:Javascript 带有$(window.load)(function()的Lab.js和jQuery过早启动,javascript,jquery,labjs,Javascript,Jquery,Labjs,我使用lab.js2.0.3并行加载脚本。 问题是,$window.load部分在10次中有1次触发得太早,而$document.ready部分工作正常 例如: <script src="http://cdnjs.cloudflare.com/ajax/libs/jquery/1.7.2/jquery.min.js" type="text/javascript"></script> <script src="http://cdnjs.cloudflare.com/
<script src="http://cdnjs.cloudflare.com/ajax/libs/jquery/1.7.2/jquery.min.js" type="text/javascript"></script>
<script src="http://cdnjs.cloudflare.com/ajax/libs/labjs/2.0.3/LAB.min.js" type="text/javascript"></script>
<script>
$LAB
.script("script1.js")
.script("script2.js")
.script("script3.js")
.wait(function(){
$(window).load(function() {
// Function 1
$("jQuery Function 1");
// Function 2
$("jQuery Function 2");
});
$(document).ready(function() {
// Function 3
$("jQuery Function 3");
// Function 4
$("jQuery Function 4");
});
});
</script>
我猜,我做错了什么,但不知道是什么:这可能是因为$window.load每页只触发一次。如果在等待加载脚本时错过了它,那么就错过了它。因此,在.wait和.load之间,您有一个比赛条件,无法真正预测您是否会赢或输
另一方面,$document.ready与延迟对象类似,因为新的回调可以在触发事件后添加,并且仍将被调用
您可以在此处看到演示:
如果希望获得与.ready for.load类似的效果,可以使用在实际事件和回调之间进行调解:
这可能是因为$window.load每页只触发一次。如果您在等待加载脚本时错过了它,那么您就错过了它。因此,在.wait和.load之间,您有一个无法预测您是否会赢或输的竞争条件
另一方面,$document.ready与延迟对象类似,因为新的回调可以在触发事件后添加,并且仍将被调用
您可以在此处看到演示:
如果希望获得与.ready for.load类似的效果,可以使用在实际事件和回调之间进行调解:
为什么您需要window.load?您不能将所有内容都放在$document中。准备好了吗?您对“太早”的定义是什么?在脚本[123]之前.js已加载?我不能用$document.ready调用script1。不知道为什么,但它不会工作。脚本开发人员在他的网站上编写了这篇文章。为什么您需要window.load?您不能将所有内容都放在$document.ready中吗?您对“太早”的定义是什么?在脚本[123]之前.js已加载?我不能用$document.ready调用script1。不知道为什么,但它不会工作。脚本开发人员在其网站上编写了此脚本。因此,我使用哪个脚本加载程序并不重要?$window.load有时工作正常,有时不等待?我无法影响它?@user1378406您无法影响。直接加载,但您可以介绍ce您自己的延迟对象来调解它和回调。请参阅我的编辑。-非常感谢。window.load现在可以很好地工作。但是现在我对document.ready也有同样的问题。每第二或第三次函数出现的时间都比脚本准备好的时间早。忽略我的最后一条注释。主要问题已经解决。document.ready也可以正常工作。函数本身有一个错误。谢谢。这不重要,我使用哪个脚本加载程序?$window.load有时工作正常,有时不等待?我不能影响它?@user1378406你不能影响。直接加载,但你可以引入你自己的延迟对象来调解它和回调。请参阅我的编辑。-非常感谢。window.load现在可以工作了很好。但是现在我对document.ready也有同样的问题。每第二次或第三次函数出现的时间都比脚本准备好的时间早。忽略我的最后一条评论。主要问题已经解决。document.ready也可以正常工作。函数本身有一个错误。谢谢
$(window).load(function () {
console.log('outer window.load');
// bind after the event
setTimeout(function () {
$(window).load(function () {
console.log('inner window.load'); // you'll never see this
});
}, 10);
});
var windowLoad = $.Deferred();
$(window).load(windowLoad.resolve);
$LAB
.script("script1.js")
.script("script2.js")
.script("script3.js")
.wait(function(){
windowLoad.done(function() {
// Function 1
$("jQuery Function 1");
// Function 2
$("jQuery Function 2");
});
$(document).ready(function() {
// Function 3
$("jQuery Function 3");
// Function 4
$("jQuery Function 4");
});
});