2

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

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

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

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

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

以下是管理滚动检查开/关的当前事件,其中 ScrollCheck() 是检查滚动位置并在不在底部时将其移动的函数,而 scrollInterval 是保存间隔 id 的全局变量。

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

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

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

4

1 回答 1

4

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

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;
于 2012-09-05T15:30:08.753 回答