Scrollheight没有获得动态内容渲染的高度,并且无法从底部启动Slimscroll

时间:2017-07-23 17:04:19

标签: javascript jquery html ajax slimscroll

我花了很多时间正确地进行滚动修正,但所有行动都失败了。

问题: 1-面向在动态内容呈现中检索滚动高度的问题

2- slimscroll不是从底部开始的。

及时加载动态内容,因此我将scrollheight与slimscroll一起使用

3- Slimscroll位置由于滚动高度而从底部影响开始。

我将slimscroll与聊天系统容器集成,同时从ajax中检索内容并插入(apppend)到聊天区域。 我采用该容器的滚动高度。所以我可以从底部启动滚动(slimscroll插件),

但在此处发现了两个问题

1- slimscroll不会从动态内容的底部开始。

2-滚动高度在内容渲染后立即返回零。

        drug_id         A   B   C   type
        lexapro.13      1   1   1   SSRI        
        effexor.223     0   1   1   SNRI    
        cymbalta.18     1   0   1   SNRI        

然后我根据scrollheight启动slimscroll代码来执行操作

$.ajax({ // retrieve data request }).done(function (result) {
$.each(data, function (index, value) { // markup concatenation done })
$(html).insertBefore('.message-center .chat-list .typing-status');

但是滚动高度显示零但是如果我等待2秒并将此代码放入settimeout settimeout中的相同slimscroll初始化代码

var chatList = $('.message-center .chat-list');

    var scrollTo_int = chatList.prop('scrollHeight') + 'px';

    $('.chat-list').slimScroll({
        scrollTo : scrollTo_int,
        height: '400',
        start: 'bottom',
        alwaysVisible: true
    });

ScrollHeight返回正确的高度,还可以完美地滚动工作。我不想等这两秒钟。

为什么我甚至无法获得滚动高度,即使内容已经呈现,

如果有人建议我这样的好方法:

1-回调方法等到滚动高度> 0然后必须启动功能。

2-我想阻止settimeout功能,我想如果内容增加可能需要1或2秒多。那是我的想法。

我花了很多时间但未能解决这个问题,你的建议对我有帮助。

谢谢,

1 个答案:

答案 0 :(得分:0)

Scrollheight返回高度正确,slimscroll也会显示从底部滚动如果我在页面加载完成后立即打开弹出窗口设置弹出窗口可见性隐藏而不是显示无。 即可。

我的测试用例:

在更多时间专注于scrollheight和slimscroll时,我注意到弹出窗口存在问题,隐藏在聊天呈现的位置。

1- 当我在正文内容区域显示聊天时,从下往上滚动, 并且滚动高度返回高度大于零。

当我在弹出窗口中显示聊天时

2-如果我立即打开聊天弹出窗口,则第3点失败并正确显示聊天,滚动高度也会返回大于零

3-聊天弹出窗口没有立即打开,因此聊天区域显示滚动高度为零,并且还会从顶部开始使用slimscroll。

现在我必须设置逻辑,如果用户打开弹出框,那么从底部显示聊天 以及如果用户在用户停止的位置之间隐藏弹出窗口。

无论如何,感谢谁看到这个问题,现在我在其他场景中工作。