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;
};
};