为什么它不能保持用户离开的位置?这对砌体来说是正常的吗? 当用户点击回来时,浏览器会转到用户离开的地方,但奇怪的是,Masonry让它回到了顶部!
顺便说一句,刷新工作正常。它将滚动条移动到用户离开的位置。但是回来不行。
编辑:当我点击“返回”时,它位于顶部。但后来我向下滚动了一点点(2个像素)。然后浏览器将跳回到左侧的位置。
URES。
编辑:如果我禁用此行,它将起作用:
$('#grid').masonry({ columnWidth:250, itemSelector:".awallpost", animate:false, resizeable:false });
答案 0 :(得分:8)
我想我有一个解决方法,但你需要尝试确保。当我单步执行代码并手动执行时,它会起作用,我认为它会起作用。我会在底部解释。
在您调用masonry()
插件的代码行之前...
$('#grid').masonry({ columnWidth:250, itemSelector:".awallpost", animate:false, resizeable:false });
...将网格的高度设置为当前高度。
var $grid = $('#grid');
$grid.height( $grid.height() ); // fix the height at its current height
$('#grid').masonry({ columnWidth:250, itemSelector:".awallpost", animate:false, resizeable:false });
如果在最初加载时或在某些浏览器中出现问题,请尝试仅在.height()
大于某个数量时设置0
。试试250
或像var $grid = $('#grid');
var height = $grid.height();
if( height > 0 ) { // or some other number
$grid.height( height );
}
$('#grid').masonry({ columnWidth:250, itemSelector:".awallpost", animate:false, resizeable:false });
这样的小号码。
masonry
问题的原因似乎是因为absolute
将每个项目的定位设置为top
,然后它会遍历它们并设置其left
和absolute
个位置在收到masonry
定位之前,手动进行任何操作。
问题是,在#grid
有机会设置位置之前,0
会折叠到#grid
高度,因为内部的项目不再影响其高度。
似乎在某些浏览器中,当masonry()
(以及文档的其余部分)的高度折叠时,它会忘记其滚动位置。这就是我们在调用absolute
之前将其高度设置为设定数量的原因,以便在内容获得{{1}}定位时不会崩溃。
答案 1 :(得分:1)
这会对你有帮助,
我发现一个帖子具有相同的senario,并测试其工作
您好, 该网站为http://www.charlotte.com/mld/charlotte/
我刚检查过,是的,该网站正在发送缓存控制:标头中没有存储。
我还阅读了您发布的错误链接。男人,这件事已被记录多年。 您发布的特定链接似乎仍未解决,它是主要的,而不是欺骗。
如果我将自己的经验添加到错误报告中,或者我应该只是笑着忍受它,这会有帮助吗?
答案 2 :(得分:1)
你确定这是由砌体造成的问题吗?该网站以前是否使用后退按钮?根据BalusC的评论,问题似乎因浏览器而异,并且由先生确认。 Chavan,该网站发送Cache-Control: no-store
所以我倾向于服务器软件或配置导致它而不是Masonry。
当HTTP响应具有某些Cache-Control:
标头时,各种浏览器的文档行为会返回页面顶部。 (简而言之:FF在no-store
- 或no-cache
上排名靠前,如果使用HTTPS,则IE不会尊重Cache-Control
。)
您可以在HTTP服务器(Apache,lighttpd等)或代码中设置缓存头。每个以网络为目标的语言都有设置HTTP标头的方法,解决问题的正确解决方案取决于您拥有的环境。
This SO post提供了一些解决方案,包括一些用JS和Cookie存储页面滚动位置的深奥方法。