jQuery 等价于 body onLoad

Posted

技术标签:

【中文标题】jQuery 等价于 body onLoad【英文标题】:jQuery equivalent of body onLoad 【发布时间】:2011-06-06 00:21:57 【问题描述】:

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

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

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

【问题讨论】:

【参考方案1】:

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

【讨论】:

如果我稍后动态创建 iFrame,似乎无法使用 .live() 和加载.. 有什么解决方案吗? 创建 iframe(例如 var iframe = document.createElement('iframe');)后,您可以使用 $(iframe).load(myfunc); 向其传递加载事件回调。我建议在将其附加到 DOM 和/或设置其 src 属性之前执行此操作。 我尝试同时使用 $(window).load(FB.Canvas.setSize()) 和 jQuery(document).loadFB.Canvas.setSize()) 。但是,它们都没有调整窗口大小,而不是使用 来完成这项工作。看起来他们的行为不同 这些都不行。您想要这样的东西:$(iframe).load(function() FB.Canvas.setSize(); ); 如果这仍然不起作用,请编辑您的原始问题并提供更多代码/上下文。 明白。您可以在创建 iframe 之前将加载事件回调附加到窗口:$(window).load(function() FB.Canvas.setSize(); ); // then create iframe【参考方案2】:

试试load():

jQuery(document).load(myfunc)

【讨论】:

我认为您不想将myfunc 的返回值传递给load 事件;) 请看我对凯文回答的最后评论【参考方案3】:

来自 ready 处理程序上的 jQuery API:

.ready() 方法一般是 与

不兼容 属性。如果必须使用负载, 要么不使用 .ready() 要么使用 jQuery 的 .load() 方法来附加负载 事件处理程序到窗口或 更具体的项目,例如图片。

【讨论】:

【参考方案4】:

这也有效:

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

【讨论】:

这如何改善接受的答案?执行此操作的方法要少得多....【参考方案5】:

发现此线程更新了一些具有<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() 会导致错误,即:indexOf is not a function in jquery.min.js

Documentation For jQuery's onEvent Handler

【讨论】:

我认为$(window).on('load', function () ...)$(window).load(function() ...) 是一回事。不是吗? 它们的功能相似,但是 load() 和 on() 确实是两个不同且独特的功能。我只是提醒一下,我发现一些消息来源表明“加载”/“卸载”正在逐步淘汰,以支持更灵活的“开启”功能。【参考方案6】:

.load(), .unload().error() 自 jQuery 1.8 起已弃用。 在您的代码中查找这些别名并将它们替换为 .on() 方法

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

【讨论】:

链接到已弃用的load event。 链接到 JQuery 3.0+ AJAX 简写method called load();读者在查看他们的代码(以及由此产生的错误)时应该意识到差异。

以上是关于jQuery 等价于 body onLoad的主要内容,如果未能解决你的问题,请参考以下文章

jQuery 等价于 Prototype array.last()

等价于纯 JS 中 jQuery 的 contents().find() 链式方法

jQuery高级选择器和其等价方法

等效于 jQuery 中的 String.format

jQuery入门

JQuery选择器