TL;DR:如何强制 IE7 加载所有被可滚动 div 隐藏的元素?
我正在构建一个“可折叠”菜单来浏览一组页面。这个菜单有 imploded 和 exploded 两种状态。
菜单项就像一本书的章节,当用户浏览内容时,“活动”菜单项会向下移动。
在页面加载时,我希望<div>
项目所在的位置立即向下滚动(!)到活动菜单项,减去一些偏移量。
像往常一样,这在 chrome 和 ff 上完美运行,但不适用于 ie7。
在分解状态下,当页面加载时不可见时,ie7 似乎不会费心“加载”项目。发生的事情是 ie7 启动菜单 div 时没有滚动条(或非常小的滚动条)。当我将 scrollTop 设置为所需数量时。div 只是向下滚动,直到滚动条“碰撞”到“div 的底部”,然后 ie7 开始加载下一部分内容,我可以进一步滚动,直到找到另一个“底部”,等等。
我设法通过使用长度为 1000 毫秒的动画来解决这个问题(刚刚选择了一个数字)。它不符合指定的要求(而且看起来很丑),我想知道如何强制 ie7 在请求之前加载此内容,因为它似乎没有加载它。
IE7 用户是我们最大的目标群体,所以不能跳过。让没有 javascript 的用户可以使用东西是一个巨大的优势。
在爆炸状态下没有问题,我尝试在爆炸状态中使用部分爆炸状态 CSS,然后将它们设置为正确的值,但没有帮助。
这是一些代码:
scrollToCurrent = function(length){
var prev = $("div.scroller div.selected").prev();
// Check if previous exists
if($(prev).length > 0) {
// number of previous items * height of an item - half an items height
var scrollY = ($(prev).prevAll().length * $(prev).outerHeight()) - ($(prev).outerHeight() / 2);
if(length === 0) {
$("div.scroller").scrollTop(scrollY);
} else {
$(".scroller").animate({
scrollTop : scrollY
}, length);
}
}
};
如果您需要更多,请告诉我。
编辑:基本 jsfiddle: http: //jsfiddle.net/AmazingDreams/keeUY/ http://jsfiddle.net/AmazingDreams/keeUY/embedded/result/