在ajax-request上保持滚动位置

时间:2014-10-31 15:36:44

标签: javascript jquery html css

我有一个单页网站,有很多容器。

每个容器的内容通过ajax加载(异步,意味着不是每个容器都同时填充数据)。

容器的动态高度(高度:自动)。

网站由智能路由系统控制(如果您输入特定网址,网站会在加载时滚动到指定元素)。

如何在其他容器加载时滚动到容器(例如容器5)和将此容器保持在相同的滚动位置(应该可以通过用户滚动进行更改)?如果容器具有固定的高度,整个工作没有任何问题,但目前,滚动位置会在每次装载或更换任何容器时发生变化。

您是否知道插件或解决此问题的好方法?

问题示例:http://jsfiddle.net/b6sno9cv/

// Global variable to define start-container:
var initialWidgetIdx = 10;

预期结果:

滚动到容器10并保持在那里(此容器上的滚动位置),即使其他容器未完全加载。

(每个容器加载后(现在有固定高度),滚动没有任何问题)

1 个答案:

答案 0 :(得分:0)

您可以使用offsetHeight来获取元素的高度。在您的情况下,您可以检查ajax请求中div的高度,然后使用scrollBy,就像这样

xmlhttp.onreadystatechange=function(){
    if (xmlhttp.readyState != 4) return
        if (xmlhttp.status == 200) {
            //do some stuff you need

            var scroll_value = document.getElementById('div_that_loaded').offsetHeight();
            window.scrollBy(0,scroll_value);
            }
        }