聊天室是动态页面,而且是真正意义上的动态页面,它是用asp,jsp,php等动态语言写的,和一般意义上说的javascript的“动态”是两回事,前者是服务器端的“动”,是页面代码的“动”,后者只是客户端的“动”

解决方案 »

  1.   

    可以用隐含帧的jsp文件不断刷新,读取新的聊天信息,再用document.write向显示帧的htm文件实现无闪烁写屏
    至于滚动,一般是每次写屏后让该页面滚动到最底,以察看最新信息,可以用个checkbox来控制是否自动滚(滚得太快晃眼)
      

  2.   

    你可以下几个看看嘛       地址:www.aspcool.com
      

  3.   

    用frameset或iframe,一个frame用于接受服务器的信息,然后写到另一个frame中,每写一次就执行一个脚本来判断滚动条。
      

  4.   

    <div id=m></div>
    <textarea id=h></textarea>
    <input onclick='m.innerHTML+=h.value;window.scrollTo(1,100000000)' value="你可以滚的" type=button>
      

  5.   

    to seabell(百合心):
      我觉得你说的有道理,
    可以用隐含帧的jsp文件不断刷新,读取新的聊天信息,再用document.write向显示帧的htm文件实现无闪烁写屏
    好像每个句子多是一个技术难点,我多不会,呵呵,来说一下,请教了
      

  6.   

    晕,这样太累了
    像sina,163的聊天室,都是真正的push技术,根本不需要刷新的
      

  7.   

    to,fantiyu 
            如何用推技术,说一下好吗,我资料一点多没。
       我想如果靠刷新网页,然后叫它重新请求好象效率太低了。
      

  8.   

    sorry这两天很忙,没来
    给你看个简单例子吧,无闪烁写屏的
    不过只是本机静态的而已,实际做时,send是提交到一个jsp文件,该文件把聊天信息写入Vector对象数组,同时一个隐含的jsp文件不断刷新读取Vector中的新信息,往show中写
    <frameset name=myfrmset rows="80%,*,0">
    <frame name=show src=show.htm>
    <frame name=send src=chat.htm>
    </frameset>chat.htm
    <body onload=document.all.message.focus()>
    <form onsubmit="parent.show.document.write(document.all.message.value+'<br>')">
    <input name=message>
    <input type=button value=send onclick="parent.show.document.write(document.all.message.value+'<br>');document.all.message.value='';document.all.message.focus()">
    <input type=button onclick="parent.show.document.close();parent.show.document.write('');document.all.message.focus()" name="clearScreen" value="clear">
    </form>
      

  9.   

    我的理解:
    "推"技術是指:server告知client,你該更新數據了而不是client去問server,是不是要更新數據。有人在這方面有研究嗎?交流一下
      

  10.   

    我的理解:
    "推"技術是指:server告知client,你該更新數據了而不是client去問server,是不是要更新數據。有人在這方面有研究嗎?交流一下
      

  11.   

    用ASP无法实现"推"吧因为网页下载完成后就完成链接了呀!想要实现推,只有用 client/server技术而不能用browser/server吧
      

  12.   

    “server告知client,你該更新數據了”:http 协议可能实现这一点吗?http是基于请求应答的形式的,有可能一个服务器能在没有请求的情况下访问客户端吗?愿闻其详!
    使用XmlDocument 应该也可以做到非常快的刷新效果吧。
      

  13.   

    这个用脚本语言没办法做,只能在服务器端做
    偶就做了一个这样的聊天室,不是Server告知Client该更新,而是这个网页一直处于没完全打开状态,Server有数据就输出一点,网络始终没断开
      

  14.   

    ASP的方法是:
    <%@Language=JScript%>
    <!-- #include file="chatlib.asp" -->
    <%PreSendChatHeader();
    var mc=new ActiveXObject("MyComponent.Uilities");while(Response.IsClientConnected)
    {
    SendChatMessages();
    Response.Flush();
    Server.ScriptTimeout+=10;
    mc.Sleep(5000);
    }%>
    但是可惜,ASP中,同Session的请求会排队的。
    所以,这个页面不停止,其他ASP页面没有办法运行。ASP。NET没有这个问题。
      

  15.   

    不过说归说。用push是很差的做法。
    IE只允许同一域下同时最多只有两条下载进程。
      

  16.   

    to Lostinet(迷失网络)宝贵得提示,十分感谢。PS:好像在这方面Java的解决方案好得多
    能谈谈JMS?
      

  17.   

    to  fantiyu我们想到一块儿了。
      那么如果一个连接正在请求,需要5分钟,这时又进来10个请求,
    那么他们会被并行处理吗?
      我的服务动态网页就是针对每个请求生成相应数据的。如果能并行,
    那么聊天客户共享这个页面是可以的,性能过得去,如果服务段不能
    多线程并行,那么服务器端就的有多少聊天客户就相应准备多少张动态
    页面
      

  18.   

    就是这样啦,永远无法完毕的动态网页
    服务器端用普通的asp,php之类的脚本语言没法做的
      

  19.   

    http://www.google.com/search?num=100&hl=zh-CN&inlang=zh-CN&ie=GB2312&newwindow=1&q=%C1%C4%CC%EC%CA%D2+%CD%C6%BC%BC%CA%F5&btnG=Google%CB%D1%CB%F7&lr=