未调用Javascript onscroll事件

未调用Javascript onscroll事件,javascript,ajax,events,Javascript,Ajax,Events,我有一个用HTML5/CSS创建的异步即时聊天程序。Javascript和PHP。我有一个间隔,不断检查用户的聊天框div是否滚动到底部,以方便用户使用。当用户希望向上滚动查看以前的消息时,这就成了一个问题,因此我尝试了onscroll事件来停止间隔。我无法让它工作,因此使用onmouseover和onmouseout事件来启动和停止间隔,走了更长的路 document.getElementById('messages').onmouseover = function() { clear

我有一个用HTML5/CSS创建的异步即时聊天程序。Javascript和PHP。我有一个间隔,不断检查用户的聊天框div是否滚动到底部,以方便用户使用。当用户希望向上滚动查看以前的消息时,这就成了一个问题,因此我尝试了onscroll事件来停止间隔。我无法让它工作,因此使用onmouseover和onmouseout事件来启动和停止间隔,走了更长的路

document.getElementById('messages').onmouseover = function()
{
    clearInterval(scrollInterval);
}

document.getElementById('messages').onmouseout = function()
{
    scrollInterval = setInterval(ScrollCheck, 300);
}
这对于桌面计算机来说非常好,因为它们有一个可见的鼠标。但是,对于移动设备,例如我的Windows phone(该程序主要是为其设计的),存在一个问题,即您首先必须点击消息框,然后将不可见的移动鼠标移动到聊天框上,然后用手指移动滚动,以不受影响地滚动

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

onscroll事件是否存在已知问题?我敢说我对JS事件很熟悉,并且可以适当地使用它们,但这是我在FF或IE中唯一没有设法开始工作的事件

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

下面是管理scrollcheck打开/关闭的当前事件,其中scrollcheck是检查滚动位置并在不在底部时移动滚动位置的函数,scrollInterval是保存间隔id的全局变量

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;

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

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;

问题需要代码吗?你做了什么?如果你的onscroll事件处理程序只做log Got,会发生什么呢!到控制台?这有效吗?@dVid事件被触发时,我测试了一个警报。虽然我意识到ScrollCheck间隔的滚动实际上也触发了这个。我需要重新设计其中的一部分,可能是通过在下面添加Kolink的内容。@Lee,这是不够的代码,我们不知道你的HTML,你的ScrollCheck函数,你应该减少它。如果事件正在触发,另一个函数之间也有冲突。我只是想解决冲突。问题需要代码吗?你做了什么?如果你的onscroll事件处理程序只做log Got,会发生什么呢!到控制台?这有效吗?@dVid事件被触发时,我测试了一个警报。虽然我意识到ScrollCheck间隔的滚动实际上也触发了这个。我需要重新设计其中的一部分,可能是通过在下面添加Kolink的内容。@Lee,这是不够的代码,我们不知道你的HTML,你的ScrollCheck函数,你应该减少它。如果事件正在触发,另一个函数之间也有冲突。我只是想解决这场冲突。如果我每次下班后问自己这个问题都有一块钱,我就不需要工作了XDHah,谢谢你。这是一个漂亮的小补充。我现在就要实施它了。如果我在工作时间后每次问自己这个问题都有一美元,我就不需要工作了XDHah,谢谢你。这是一个漂亮的小补充。我现在就要实施它。