如何在"完成页面加载后调用一个函数"和#34;在所有外部脚本执行之后"?

时间:2015-07-10 05:29:29

标签: javascript jquery html

如何在&#34之后调用一个函数;完成页面加载"和#34;在所有外部脚本执行之后" ?

我尝试了下面的所有4选项,但没有运气!!!

$(document).ready..
$(window).load...
window.onload = ...
$(document).ready(function()...

做setTimeout对我有用,但不确定这是否100%有效!!!!

setTimeout(function(){
//your code here
}, 3000);

请建议和帮助!!!

2 个答案:

答案 0 :(得分:3)

我对你的问题非常感兴趣,并深入到jQuery来源,我想出了一个疯狂的黑客:) 但关键是你应该在插入jQuery后立即将这段代码放在一起:

$.statesNum = 0;
$.fn.ready = function ( fn ) {
    $.statesNum++;
    jQuery.ready.promise().done( fn ).then(function () {
        $.statesNum--;
        if ($.statesNum == 0) {
            $(document).trigger("afterReady");
        }
    });

    return this;
};

现在,只要你想在所有.ready函数完成后执行某些操作,就可以这样做:

$(document).on("afterReady", function () {
    alert("Hey, the ready functions are executed");
});

答案 1 :(得分:1)

脚本按照它们在HTML中出现的顺序加载和执行。如果您有简单的脚本,只需将您想要在以后运行的内容放在底部。

但是,如果你有异步运行的复杂脚本(意味着它们并行运行),那么就不可能知道它们是否已经完成执行而没有真正查看它们的作用。例如。他们(或者他们可以)触发你可以听的事件吗?或许你可以使用“承诺”模式。