2012-05-08 36 views
1

我对jQuery Mobile的问题是如何在实际加载之前等待页面完全加载(所有图像,文本)。为了澄清,一旦用户点击链接,加载图形在页面加载时停留在屏幕上,一旦完成加载,隐藏加载图形并加载页面。jQuery Mobile等待整个页面完成加载

这可能吗?

+0

这是可能的,但你必须通过监听链接的单击事件手动执行,手动检索并追加页面,解析它为images/scripts/css,然后确认它们全部完成加载。 –

回答

2
$(document).on('click', '.my-custom-links', function() { 
    //get the requested page 
    $.ajax({ 
     url  : this.href, 
     success : function (page) { 
      //get only the first data-role="page" element 
      var $page = $(page).find('[data-role="page"]').first(); 

      //now bind an event handler to all the elements that will need to load 
      var $assets  = $page.find('img, script, link'), 
       assets_loaded = 0; 

      //make sure to bind to the load event before adding the element to the DOM 
      $assets.on('load', function() { 
       assets_loaded++; 
       if (assets_loaded == $assets.length) { 
        //all the assets have loaded, so navigate to the new page 
        $.mobile.changePage($page); 
       } 
      }); 

      //add new page to the DOM 
      $.mobile.pageContainer.append($page) 
     }, 
     error : function (jqXHR, textStatus, errorThrown) { /*Don't forget to handle errors*/ } 
    }); 
    return false; 
}); 

有一个第一个破解它。基本观点与凯文B.所评论的并不遥远。 Hi-jack点击某些链接,抓住目标链接的页面,将其添加到DOM,然后仅在资源加载完成后才显示它。