jQuery相当于body onLoad

时间:2011-01-09 08:18:51

标签: javascript jquery

是否可以将<body onLoad="myfunc()">与jQuery的document.ready()处理程序一起使用? 我找不到用jQuery实现<body onLoad>的相同功能的方法。

用例的一个例子是facebook应用程序。 Iframe facebook应用程序需要使用调整iframe大小的FB.Canvas.setSize函数。

只有在页面上的所有元素都加载完毕后才需要启动它。

6 个答案:

答案 0 :(得分:34)

$(window).load(myfunc)正是您正在寻找的。如果您正在使用iframe的加载事件,则可以将window替换为iframe元素/选择器。

答案 1 :(得分:5)

这也有效:

$(window).load(function(){
    // ..
    myfunc();
    // ..
});

答案 2 :(得分:4)

来自ready处理程序的jQuery API:

  

.ready()方法通常是   与&lt; body onload =“”&gt;不兼容   属性。如果必须使用负载,   要么不使用.ready()或使用   jQuery的.load()方法来附加load   事件处理程序到窗口或   更具体的项目,如图片。

答案 3 :(得分:1)

发现此线程更新了一些具有<body onload="someFunc()">的旧代码,以便提供更新的答案:

请勿使用load()。尽管$(document).ready(function(){...});应该可以工作(取决于您的用例),但您实际上希望:$(window).on('load', function(){...});更紧密地模仿<body onload="...">

Some threads建议自jQuery 1.8(以及.unload().error()以来不推荐使用此方法,应将其替换为正确的.on()实现。我已经确认在3.3.1上使用load()会导致错误,即:jquery.min.js中的indexOf is not a function

Documentation For jQuery's onEvent Handler

答案 4 :(得分:1)

从jQuery 1.8开始,不推荐使用

.load(), .unload().error()。 在代码中查找这些别名,然后将其替换为.on()方法

$(window).on('load', function(){...})

答案 5 :(得分:0)

尝试load()

jQuery(document).load(myfunc)