1

在寻找了几个小时并没有找到答案之后,我决定来找你,哦,我一直在寻求帮助的伟大社区。我有一个 iframe,当我的用户滚动时,他们离开,然后回来,我们想使用 scrollto 来回到正确的位置。那么如何保存/导出/添加到变量这个 iframe 的 x 和 y 或者那是不可能的?

4

2 回答 2

0

您需要采取的第一步是获取 x/y 分量。elem.scrollTop您可以通过使用和来实现这一点elem.scrollLeft。将这些记录到本地存储,使用onscroll事件检测滚动。然后,下一页加载,将记录的 x/y 组件分配给 iframe 的elem.scrolLTopelem.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 回答