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 on
Event 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()