未调用Javascript onscroll事件

Javascript onscroll event not being called

本文关键字:事件 onscroll Javascript 调用      更新时间:2023-09-26

我用HTML5/CSS创建了一个即时聊天程序Asynch。Javascript和PHP。我有一个时间间隔,不断检查用户的聊天框div是否滚动到底部,以方便用户使用。当用户希望向上滚动查看以前的消息时,这就成了一个问题,所以我尝试了onscroll事件来停止间隔。我无法实现这一点,因此使用onmouseoveronmouseout事件来启动和停止间隔。

这对台式电脑来说非常好,因为它们有一个可见的鼠标。然而,对于移动设备,比如我的Windows手机(该程序主要是为它设计的),存在一个问题,因为你必须首先点击消息框(大概是先将看不见的移动鼠标移动到聊天框上),然后用手指移动滚动以不受影响地滚动。

这不是一个大问题,因为我可以通知移动用户先点击然后滚动,但我觉得成功使用onscroll事件将与桌面用户的可用性相匹配。

onscroll事件是否存在已知问题?我敢说我熟悉JS事件,可以适当地使用它们,但这是我在FF或IE中唯一没有成功工作的事件。

任何想法或帮助都将不胜感激,李。

以下是管理滚动检查打开/关闭的当前事件,其中scrollcheck()是检查滚动位置的函数,如果不在底部,则将其移动;scrollInterval是保存间隔id的全局var。

document.getElementById('messages').onmouseover = function()
{
    clearInterval(scrollInterval);
}
document.getElementById('messages').onmouseout = function()
{
    scrollInterval = setInterval(ScrollCheck, 300);
}

我只是简单地将onmouseover事件替换为onscroll,没有任何运气。

当我创建聊天页面时,我只在添加新消息时检查滚动:

var currentScroll = elem.scrollTop, oldmaxScroll = elem.scrollHeight-elem.clientHeight;
// add new message(s) here
var newmaxScroll = elem.scrollHeight-elem.clientHeight;
if( currentScroll == oldmaxScroll) elem.scrollTop = newmaxScroll;