吐血: 新消息的判断,以及Div滚动条的解决方案. 请高人解决

che2piaopiao 2009-02-23 04:30:25
其实两个问题是结合的,,有新消息才让滚动条到最底.

问题1:

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

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

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

问题2:


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

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

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




其实两个问题是结合的,,有新消息才让滚动条到最底.
...全文
554 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
jack420124 2009-02-25
  • 打赏
  • 举报
回复
我建议你用dwr的推技术,你去官方网站下载.里面有例子的,一用就会而且.
非常容易实现.不容易出错.
注意,实现了,可不要忘记了帮我顶下啊
Terry717 2009-02-24
  • 打赏
  • 举报
回复
学习中。。。。。。
loopylf 2009-02-24
  • 打赏
  • 举报
回复
学习
mrhu7002 2009-02-24
  • 打赏
  • 举报
回复
2楼正解
che2piaopiao 2009-02-24
  • 打赏
  • 举报
回复
把聊天的数据也放到Datatable,性能是否会更快呢?
che2piaopiao 2009-02-24
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 xb254044992 的回复:]
引用 6 楼 fangq 的回复:
将消息写入Application中,发送一条就设一个标识,根据标识来判断

这个可以尝试下 如果成功 服务器绝对会得到解放
不太赞成用Timer去检测的办法
的确 如果时间间隔足够小的话 是可以有想要的效果
可是当同时使用的用户一增加 那时候服务器可想而知
[/Quote]那也不是要时时检测Application??
xsm545 2009-02-24
  • 打赏
  • 举报
回复
学习...帮顶
xb254044992 2009-02-24
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 fangq 的回复:]
将消息写入Application中,发送一条就设一个标识,根据标识来判断
[/Quote]
这个可以尝试下 如果成功 服务器绝对会得到解放
不太赞成用Timer去检测的办法
的确 如果时间间隔足够小的话 是可以有想要的效果
可是当同时使用的用户一增加 那时候服务器可想而知
cpp2017 2009-02-23
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 che2piaopiao 的回复:]
引用 1 楼 cpp2017 的回复:
你都已经实现了,聊天的消息用内存中的datatable检测就可。
去掉定时器的滚动,收到消息时再滚动。



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

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

这样可行吗?

有更好的办法没,这位 高手
[/Quote]
用ajax去检测server的内存中的datatable.也不用每秒这么短时间去查。
消息不是从数据库中提取的,是发送的时候就只写到内存中。
fangq 2009-02-23
  • 打赏
  • 举报
回复
将消息写入Application中,发送一条就设一个标识,根据标识来判断
Clove 2009-02-23
  • 打赏
  • 举报
回复
你要这么做,服务器估计就让你拖死了
timer 间隔设的大小直接影响性能
虽然你使用了AJAX 2.0控件

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

2、当新信息来的时候,判断当前滚动条的位置
如果没有拖动,则自动滚到顶端
如果拖动过,则不变
che2piaopiao 2009-02-23
  • 打赏
  • 举报
回复
.........我用的AJAX控件,应该也凑合吧? 道理差不多
wdf618 2009-02-23
  • 打赏
  • 举报
回复
楼主自己没搞明白哦~~
页面聊天的话肯定是用ajax技术,在浏览器端定时去向服务器查问是否有新消息
这样的话的二个问题也就解决了,即有新消息的时候你再在js里面把滚动条滚到最下方
che2piaopiao 2009-02-23
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 cpp2017 的回复:]
你都已经实现了,聊天的消息用内存中的datatable检测就可。
去掉定时器的滚动,收到消息时再滚动。
[/Quote]


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

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

这样可行吗?

有更好的办法没,这位 高手
cpp2017 2009-02-23
  • 打赏
  • 举报
回复
你都已经实现了,聊天的消息用内存中的datatable检测就可。
去掉定时器的滚动,收到消息时再滚动。

62,050

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧