Javascript 正在等待第一个事件完成,然后继续使用document.ready代码

Javascript 正在等待第一个事件完成,然后继续使用document.ready代码,javascript,jquery,events,Javascript,Jquery,Events,我的问题很简单 在调用document.ready()之前,需要进行一些配置和加载 这个onready事件处理程序可能需要很长时间才能完成 在此之后,我想调用document.ready()事件侦听器来加载页面的其余部分,如下所示: $(document).ready(function() { // code here might be dependent on the completion of // soundManager.onready event handler

我的问题很简单

在调用document.ready()之前,需要进行一些配置和加载

这个
onready
事件处理程序可能需要很长时间才能完成

在此之后,我想调用
document.ready()
事件侦听器来加载页面的其余部分,如下所示:

$(document).ready(function() { 
    // code here might be dependent on the completion of 
    // soundManager.onready event handler 
});
如何确保
$(document).ready
仅在
soundManager.onready
处理程序完全完成后才发生


提前多谢

您不能,因为浏览器决定DOM何时准备就绪。我的建议是,只需删除document.ready处理程序,并将启动函数传递给sound manager的
onready
。我的意思是,替换这个:

$(document).ready(function() { 
    // do init stuff 
});
为此:

function initStuff() {
    // do init stuff 
}
soundManager.setup({
    url: 'swf/',
    onready: initStuff
});

为确保不引用DOM中未包含的任何元素,请将代码添加到html的末尾,就在

之前,您可以使用
延迟的

var soundManagerDeferred = $.Deferred();

soundManager.setup({
    url: 'swf/',
    onready: SMOnReadyHandler
});

function SMOnReadyHandler() {
    soundManagerDeferred.resolve();
}

$(document).ready(function() {
    soundManagerDeferred.done(function() {
        //init
    });
});

onready函数的作用是什么?或者它甚至是一个函数?您可能想发明自己的事件来替换$(document).ready(),如Alxandr对问题的回答所示:@JayHarris:
onready
保存分配给它的方法,类似于
window.onload=function(){…}
如果您有权访问该功能,那么我认为您的答案如下。这不正是提前开始加载SoundManager配置的关键吗?使用您的代码,我有效地执行了
$(document).ready(function(){soundManager.setup();}),对吗?嗯,差不多了。如果你有一个沉重的DOM,这将产生不同。但它保证document.ready仅在声音加载后运行。杰森的回答更优雅。我想这正是我需要的。你知道关于不同对象的好教程吗?我对他们不熟悉。我想我真正想要的是一种链接异步回调的方法,这样它们的执行顺序就很重要了。试试这个网站。请务必检查本页底部的两个链接:
var soundManagerDeferred = $.Deferred();

soundManager.setup({
    url: 'swf/',
    onready: SMOnReadyHandler
});

function SMOnReadyHandler() {
    soundManagerDeferred.resolve();
}

$(document).ready(function() {
    soundManagerDeferred.done(function() {
        //init
    });
});