在寻找了几个小时并没有找到答案之后,我决定来找你,哦,我一直在寻求帮助的伟大社区。我有一个 iframe,当我的用户滚动时,他们离开,然后回来,我们想使用 scrollto 来回到正确的位置。那么如何保存/导出/添加到变量这个 iframe 的 x 和 y 或者那是不可能的?
问问题
417 次
2 回答
0
您需要采取的第一步是获取 x/y 分量。elem.scrollTop
您可以通过使用和来实现这一点elem.scrollLeft
。将这些记录到本地存储,使用onscroll
事件检测滚动。然后,下一页加载,将记录的 x/y 组件分配给 iframe 的elem.scrolLTop
和elem.scrollLeft
。
var frame = document.getElementById("frame");
frame.contentWindow.addEventListener("scroll", function(){
sessionStorage.setItem("coordinates", this.scrollLeft + "," + this.scrollTop);
}, false);
window.addEventListener("load", function(){
if(sessionStorage.getItem("coordinates")){
var coordinates = sessionStorage.getItem("coordinate").split(",");
frame.scrollLeft = coordinates[0];
frame.scrollTop = coordinates[1];
}
}, false);
注意:未经测试,很可能保证在不修改以清除错误的情况下无法工作。
编辑:我意识到 iframe 不能处理onscroll
,所以你必须找到一个解决方法......
于 2012-08-25T04:25:41.767 回答
0
您可以使用此 jquery 插件将 x,y 变量保存到 cookie:https ://github.com/carhartl/jquery-cookie
例子:
$(window).unload(function() {
//save scroll on unload
$.cookie('scroll_x',$("#yourElementId").scrollLeft());
$.cookie('scroll_y',$("#yourElementId").scrollTop());
});
$(document).ready(function() {
//restore scroll when the dom is ready
var x = $.cookie('scroll_x');
var y = $.cookie('scroll_y');
if( x != null ) $("#yourElementId").scrollLeft(x);
if( y != null ) $("#yourElementId").scrollTop(y);
});
您要滚动的元素的 id 是“yourElementId”。
于 2012-08-25T05:09:34.677 回答