0

我目前正在修改smoothDivScrolljquery 插件,发现它在 Chrome 和 Safari 中存在问题。

经过大量谷歌搜索和 StackOverflow 搜索后,我可以将此归因于 Chrome 和 Safari 中计算图像尺寸的方式存在问题。

问题是,在 chrome 和 Safari 中,图像出现在滚动条中时还不可见,并且滚动条的整体宽度无法在这些浏览器中计算出来,并产生一系列空白。

我得出的结论是,需要预先加载图像才能计算其中的尺寸。

这是有问题的代码:

// Add up the total width of all the items inside the scrollable area
el.data("scrollableArea").children(o.countOnlyClass).each(function () {
    // Check to see if the current element in the loop is the one where the scrolling should start
    if ($(this).is('img')) {

        if ((o.startAtElementId.length !== 0) && (($(this).attr("id")) === o.startAtElementId)) {
            el.data("startingPosition", tempScrollableAreaWidth);
            foundStartAtElement = true;
        }
        var ow = $(this).outerWidth(true);

        if (ow == 0) ow = 1 * $(this).find("img").attr("width");

        el.data("allImages").each(function () {
            var ths = $(this);
            var kx = eh / 1 * ths.attr("height");
            ths.attr({
                width: kx / ths.attr("width"),
                height: eh
            })
        })
        //tempScrollableAreaWidth +" "+ $(this).outerWidth(true) + " "
        tempScrollableAreaWidth = tempScrollableAreaWidth + ow;

    }
});

我已经尝试在此脚本运行之前在外部预加载图像,但是 chrome 和 safari 只会偶尔运行它们,并且预加载的图像似乎永远不会成功。

我想知道是否有人可以向我展示如何在此脚本中预加载这些图像,以便可以通过最后处理的计算来访问图像尺寸,即tempScrollableAreaWidth.

4

1 回答 1

0

在该功能刷新或创建滚动条中使用图像加载功能。

于 2013-10-10T05:07:46.800 回答