我目前正在修改smoothDivScroll
jquery 插件,发现它在 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
.