2012-09-10 42 views
1

我的应用程序使用PJAX样式导航,这意味着不是加载整个页面,而是使用AJAX加载部分页面,然后使用HTML5 history/pushState API更新浏览记录。PJAX请求完成并已下载资产后的回调

以前我使用window.onload事件来衡量最终用户页面加载时间,我希望能够用PJAX页面加载记录这些时间,问题是这个事件不会在PJAX加载后触发。

我有权访问一个pjax:end事件,该事件在PJAX请求完成后触发,但在所有资产完成下载之前触发。我希望能够测试下载页面所需的全部时间,包括下载额外(图像/脚本)资源的时间。

这可能吗?有没有一个回调我失踪或一些魔法,可以让我来衡量完整的请求时间?

回答

2

我意识到我只需要等待图像(不是脚本)。 一个朋友向我指出这个jQuery插件:https://github.com/alexanderdickson/waitForImages

我使用此代码触发onload事件:

$('#main-inner').waitForImages(function() { 
    window.onload(); 
}); 
1

我不认为有一个HTML的块异步加载的特定事件。我认为最好的选择是附上你的HTML,找到每个imgscript,然后绑定到load事件(假设jQuery)为他们每个人。当加载次数等于您找到的元素数量时,则加载所有内容。我希望这有帮助。

var start = new Date().getTime(), 
    elems = $('#my-div').append(html).find('img, script'), 
    count = 0; 

elems.on('load', function() { 
    if (++count === elems.length) { 
     var diff = new Date().getTime() - start; 
    } 
});