【问题标题】:callback when web page download completes网页下载完成时回调
【发布时间】:2012-02-21 05:40:49
【问题描述】:

当用户单击网页中的选项卡时,该选项卡将打开并从服务器下载相应的页面。

我想通过 java 脚本或 jquery 在这个页面中添加一些 UI。我知道如何添加它,但问题是如果我执行我的 java 脚本函数以在单击选项卡时添加 UI,它不起作用,因为尚未下载相应的页面。

基本上,我想知道页面完全下载时调用的这种函数。

【问题讨论】:

  • 能否详细说明“其对应的页面从服务器下载”?你在干嘛?使用$.ajax()?
  • 是的,页面使用ajax异步下载
  • 这仍然不能告诉我们太多,如果您使用 jQuery 的$.ajax(),那么您必须做一些事情才能在页面中获取该内容。你真的必须在这里提供一些关于你在做什么的信息(即:代码)。
  • 现有代码不使用jquery,它使用javascript发出ajax请求。单击选项卡时,会向服务器发送请求,其内容是从服务器下载的一些 div 元素

标签: javascript jquery html dom javascript-events


【解决方案1】:

你用过JQuery成功吗??只有在您的响应准备好后才会调用成功处理程序。 试试这个:

$.ajax({
  url: "test.html",
  context: document.body,
  success: function(){
    //Do the stuff here, hence downloading has been completed and response from server is ready
    $(this).addUI("done");
  }
});

【讨论】:

    【解决方案2】:

    在页面正文中添加此内容..

    <body onload="init()">
    
    </body>
    

    基本上你打电话给你的init function——它会在网页正文加载后启动你想要的所有其他功能..

    【讨论】:

    • 其实新的html页面没有下载,只有一组div标签异步下载
    • 当你没有给我们任何信息时,真的很难猜到这些事情。提供链接、jsfiddle 或源代码
    • @vikas 提供您的代码.. 很难猜出您在做什么.. 如果您通过 ajax 执行此操作 - 有一些称为 onreadystatechange 事件 - 这会更改 readyState - 所以,一旦就绪状态为4100,您就可以在那里添加您的js .. 即if (xmlhttp.readyState==4 &amp;&amp; xmlhttp.status==200) { //do whatever you want here with xmlhttp.responseText; }
    【解决方案3】:

    我也遇到过这个问题..这里的问题是您的内容在您处理之前尚不可用。
    您提供的任何参考都将导致返回 Null 解决方案可以是 .bind() & .live()

    假设这是您的动态内容

    $('body').append('<div class="clickme">Another element</div>'); 
    


    您可以通过以下方式绑定元素,

    $('.clickme').bind('click', function() {  
     // Bound handler called.  
    });  
    

    或将其注册为实时内容,由

    $('.clickme').live('click', function() {  
    // Live handler called.  
    }); 
    

    当不再需要时,您可以通过 .die()
    取消订阅动态内容上的事件 您可能还会发现 .delegate()undelegate() 很有用,因为 .live() 和 .die() 几乎没有问题。
    检查http://www.alfajango.com/blog/the-difference-between-jquerys-bind-live-and-delegate/ 以选择您的应用程序所需的那个。
    请记住不要忘记您确保内容是由 ajax 成功加载的,如这里提到的programmer_1。
    祝你好运:)
    任何进一步的澄清请评论。

    【讨论】:

      猜你喜欢
      • 2016-12-02
      • 2012-08-14
      • 2020-06-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-21
      • 2010-09-14
      • 2021-07-10
      相关资源
      最近更新 更多