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

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

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

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

【问题讨论】:

    标签: javascript jquery


    【解决方案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();读者在查看他们的代码(以及由此产生的错误)时应该意识到差异。
      猜你喜欢
      • 1970-01-01
      • 2013-01-05
      • 1970-01-01
      • 1970-01-01
      • 2010-11-12
      • 2014-01-04
      • 2011-08-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多