如何保存iframe(scrollto)的x和y?有可能吗

How to save the x and y of iframe (scrollto)? Is it possible?

本文关键字:有可能 scrollto 何保存 保存 iframe      更新时间:2023-09-26

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

您可以使用这个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"。

您需要采取的第一步是获取x/y组件。您可以通过使用elem.scrollTopelem.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,所以你必须找到一个解决方法