Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/88.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 Div溢出滚动到底部:是否可能?_Javascript_Html - Fatal编程技术网

Javascript Div溢出滚动到底部:是否可能?

Javascript Div溢出滚动到底部:是否可能?,javascript,html,Javascript,Html,如果我有一个div,带有overflow:auto,因此它是一个可滚动的div,并且我加载了一个重要的滚动区域,那么在加载信息时,div会显示底部结果吗?或者本质上是滚动到底部 我见过jQuery解决方案,但这是在HTA中使用的,所以我不能使用jQuery。有没有一种纯javascript的方法来实现这一点 document.getElementById('mydiv').scrollTop = 9999999; 该属性指定从区域顶部开始的滚动偏移(以像素为单位)。将它设置为一个非常大的值将迫

如果我有一个
div
,带有
overflow:auto
,因此它是一个可滚动的
div
,并且我加载了一个重要的滚动区域,那么在加载信息时,
div
会显示底部结果吗?或者本质上是滚动到底部

我见过jQuery解决方案,但这是在HTA中使用的,所以我不能使用jQuery。有没有一种纯javascript的方法来实现这一点

document.getElementById('mydiv').scrollTop = 9999999;

该属性指定从区域顶部开始的滚动偏移(以像素为单位)。将它设置为一个非常大的值将迫使它位于底部。

我认为在元素更新后需要设置scrollTop

setTimeout(function (){ 
  el.scrollTop = 999999999
}, 10)
此外,至少在chrome中,9999999999将滚动到底部。但是99999999999(额外的9)将滚动到顶部。在webkit的C端,它可能被转换为int。

这个怎么样

function scroll_to_max(elm) { // {{{
    if(!scroll_to_max_el) {
        scroll_to_max_el = elm;
        setTimeout(scroll_to_max, 10); // Allow for the element to be updated
    } else {
        var el = scroll_to_max_el;
        var t = el.scrollTop;
        el.scrollTop = t+100;
        if(el.scrollTop != t) {
            setTimeout(scroll_to_max, 10); // Keep scrolling till we hit max value
        } else {
            scroll_to_max_el = null;
        }
    }
}
var scroll_to_max_el = null; // Global var!
// }}}
(注:仅在铬中进行测试…)

在Firefox、Safari、Opera、Chrome甚至Internet Explorer中都能工作,这比我设置的SSE测试用例所能说的还要多。。。哈哈

我不会再对其他人提供的愚蠢的解决方案大惊小怪了,下面是一个可以用于即时消息类型客户端的代码示例

document.body.onload = function()
{
    var myDiv = document.getElementById('myDiv');
    // Pick your poison below, server sent events, websockets, AJAX, etc.
    var messageSource = new EventSource('somepage');
    messageSource.onmessage = function(event)
    {
        // You must add border widths, padding and margins to the right.
        var isScrolled = myDiv.scrollTop == myDiv.scrollHeight - myDiv.offsetHeight;
        myDiv.innerHTML += event.data;
        if(isScrolled)
            myDiv.scrollTop = myDiv.scrollHeight;
    };
};

该示例的相关部分检查div是否已滚动到底部,如果已滚动到底部,则在向其添加数据后将其滚动到底部。如果尚未滚动到底部,则div的滚动位置将保持不变,以便添加数据不会影响div的可见内容。

稍后回答,但这更有帮助


$('mydiv').scrollTop(($('mydiv').height()*2))

我试图使用:函数jsDivBottom(divID,strMsg){var myDiv=document.getElementById(divID);myDiv.innerHTML=strMsg myDiv.scrollTop=999999;},但它没有滚动到底部。消息正在应用,所以我知道另一部分正在工作。。。有什么建议吗?我在将.scrollTop参数设置为9999999后,立即对其执行了一个警报(),它返回0。不管出于什么原因,即使我设置了它,它似乎没有采取。纳米。。。我正在将我的内容写入一个span,并试图在其上设置scrollTop参数。我把它转贴到包裹处,这部分起作用了。它似乎向下滚动了大约三分之一的距离。我试图多加几个9,但没有效果。有什么建议吗?
document.body.onload = function()
{
    var myDiv = document.getElementById('myDiv');
    // Pick your poison below, server sent events, websockets, AJAX, etc.
    var messageSource = new EventSource('somepage');
    messageSource.onmessage = function(event)
    {
        // You must add border widths, padding and margins to the right.
        var isScrolled = myDiv.scrollTop == myDiv.scrollHeight - myDiv.offsetHeight;
        myDiv.innerHTML += event.data;
        if(isScrolled)
            myDiv.scrollTop = myDiv.scrollHeight;
    };
};