日期:2014-05-18  浏览次数:20373 次

吐血: 新消息的判断,以及Div滚动条的解决方案. 请高人解决
其实两个问题是结合的,,有新消息才让滚动条到最底.

问题1:

页面A,页面B.
用户A在A页面,用户B在B页面.
进行聊天。
怎么检测用户A给用户B发了新消息。

我现在是用两种方法实现了:
Timer1定时提取数据库数据,看是否有新消息
Timer2定时提取Datatable, 看是否有新消息。

还有没有更好的方法判断有新消息?

问题2:


DIV滚动条问题: 给Div设置了overflow: auto;
内部内容增多时,滚动条会自动出现.

后台是定时提取数据的,如果提取到,内部内容就会增加,DIV滚动条就不会在最底了。
开始设置了Js.并每秒执行一次。 但是向上拖动滚动条时,滚动条又自动跑到下面了。
请问这个问题又能怎样解决?

C# code
 function sc() 
        { 
            var e=document.getElementById("selcontent");
            if(e)
                e.scrollTop=e.scrollHeight;                       
        }
     var s=setInterval("sc()",1000)  




其实两个问题是结合的,,有新消息才让滚动条到最底.

------解决方案--------------------
你都已经实现了,聊天的消息用内存中的datatable检测就可。
去掉定时器的滚动,收到消息时再滚动。
------解决方案--------------------
楼主自己没搞明白哦~~
页面聊天的话肯定是用ajax技术,在浏览器端定时去向服务器查问是否有新消息
这样的话的二个问题也就解决了,即有新消息的时候你再在js里面把滚动条滚到最下方
------解决方案--------------------
你要这么做,服务器估计就让你拖死了
timer 间隔设的大小直接影响性能
虽然你使用了AJAX 2.0控件

1、cpp2017 的方法可行,牺牲服务器性能节省数据库资源

2、当新信息来的时候,判断当前滚动条的位置
如果没有拖动,则自动滚到顶端
如果拖动过,则不变
------解决方案--------------------
探讨
引用:
你都已经实现了,聊天的消息用内存中的datatable检测就可。
去掉定时器的滚动,收到消息时再滚动。



时时检测是不是很耗费资源?

收到消息时, 是不是指在内存中检测到后再滚? 但这样又要用Timer每秒提取Datatable.

这样可行吗?

有更好的办法没,这位 高手