Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Scrollheight无法通过ajax获取动态内容渲染的高度,无法从底部初始化Slimscroll_Javascript_Jquery_Html_Ajax_Slimscroll - Fatal编程技术网

Javascript Scrollheight无法通过ajax获取动态内容渲染的高度,无法从底部初始化Slimscroll

Javascript Scrollheight无法通过ajax获取动态内容渲染的高度,无法从底部初始化Slimscroll,javascript,jquery,html,ajax,slimscroll,Javascript,Jquery,Html,Ajax,Slimscroll,我花了很多时间来采取正确的行动,但所有的行动都失败了 问题: 1-在动态内容渲染中检索滚动高度面临问题 2-不要从底部开始滚动 动态内容加载及时,因此我使用scrollheight和slimscroll 3-由于滚动高度,从底部开始的滚动位置会受到影响 我将slimscroll与聊天系统容器集成,同时从ajax检索内容并将其插入(apppend)聊天区域。 我取那个容器的高度。所以我可以从底部启动scroll(slimscroll插件) 但是在这里发现了两个问题 var chatList = $

我花了很多时间来采取正确的行动,但所有的行动都失败了

问题: 1-在动态内容渲染中检索滚动高度面临问题

2-不要从底部开始滚动

动态内容加载及时,因此我使用scrollheight和slimscroll

3-由于滚动高度,从底部开始的滚动位置会受到影响

我将slimscroll与聊天系统容器集成,同时从ajax检索内容并将其插入(apppend)聊天区域。 我取那个容器的高度。所以我可以从底部启动scroll(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
    });
1-slimscroll不从动态内容的底部开始

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

$.ajax({ // retrieve data request }).done(function (result) {
$.each(data, function (index, value) { // markup concatenation done })
$(html).insertBefore('.message-center .chat-list .typing-status');
然后我启动slimscroll代码,根据scrollheight执行操作

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显示为零,但如果我等待2秒并将此代码放入settimeout settimeout中的初始化代码相同

// setTimeout(function () {
                //     chatToBottom();
                // }, 2000);
ScrollHeight返回正确的高度,slimscroll也能完美地工作。我不想等这两秒钟

即使内容已呈现,我也无法获取scrollheight的原因,

如果有人能给我推荐一个好方法,比如:

1-回调方法等待scrollheight>0,然后必须启动函数

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

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


谢谢,

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

我的测试用例:

在更多时间关注scrollheight和slimscroll的过程中,我注意到弹出窗口有一个问题,它隐藏在聊天显示的地方

1-当我在正文内容区显示聊天时从底部开始滚动, 并且滚动高度返回高度大于零

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

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
    });
2-如果我立即打开聊天弹出窗口,则第3点案例失败,聊天显示正确,滚动高度也返回大于零

3-聊天弹出窗口不会立即打开,因此聊天区显示scrollheight零,也显示slimscroll start(从顶部开始)

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

不管怎样,感谢看到这个问题的人,现在我正在处理其他场景