用于iPhone的jQuery预加载图像

时间:2011-02-14 17:52:17

标签: jquery preloading

            // After a page turn
            after: function(opts) {

                var currPageIndex = opts.curr - 1;

                generatePage(currPageIndex);            // This page
                generatePage(currPageIndex + 1);        // Right side page
                generatePage(currPageIndex + 2);
                generatePage(currPageIndex + 3);
            } 
        });
    });

    // Generates the page
    function generatePage(pageID){               

        // Check not already loaded
        if(pageID >= 0 && pageID < arrPages.length && !arrPages[pageID][2])
        {
            arrPages[pageID][2] = true;
            $('#page' + pageID).html('<img src="<%=strProjectPath%>/pages/originals/' + arrPages[pageID][1] + '" alt="Page image" />');
        }
    }

    // Load first page
    $(document).ready(function() {
        generatePage(0);
        generatePage(1);
        generatePage(2);
    });

如您所见,文档准备就绪后,将生成第0,1和2页。 0是可立即查看的图像,然后在翻页时预加载1和2。

当他们翻页时,它会加载他们正在查看的当前两个页面(包括直接跳过它们并且不会预先加载)和接下来的2页。

如何偏置加载,因此它首先加载可立即查看的页面?你能用Jquery onload排队下一页吗?目前,4页理论上可以同时加载他们的图像,这在手机上会很慢。

1 个答案:

答案 0 :(得分:1)

当然,您可以使用jQuery load(),但不应立即添加所有图片。例如,您可以将它们排队:

var preload = function (pageID, rest) {
    $('#page' + pageID).append(
        $('<img/>', {
            src: "<%=strProjectPath%>/pages/originals/' + arrPages[pageID][1] + '"
        }).load(function () {
            rest.length && preload(rest[0], rest.splice(1));
        })
    );
};