您的位置:首页 > Web前端 > JavaScript

用JS代码解决一个聊天系统聊天消息是否刷屏

2013-12-25 15:29 155 查看
今天解决了一个小问题,关于怎么使用JS代码判断聊天系统中聊天消息是否刷屏的问题

解决代码如下:

aspx中的代码:

<%@ page language="C#" autoeventwireup="true" CodeFile="Chat.aspx.cs" Inherits="Chat" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

<title></title>

<%-- <link rel="stylesheet" href="css/niftyCorners.css" />

<link rel="stylesheet" href="css/style.css" />--%>

<link rel="Stylesheet" href="css/base.css" />

<link rel="Stylesheet" href="css/main.css" />

<script type="text/javascript" src="js/AjaxFunctions.js"></script>

<script type="text/javascript" src="js/niftycube.js"></script>

</head>

<body>

<div class="header">

<div class="top_nav">

<div class="top_inner">

<div class="top_wecome fl pr30 w200"><span>欢迎来到--<%= name %></span></div>

<div class="top_info fr w200"><a href="http://training.hnteacher.net/">返回首页</a><span>|</span><a href="#" onclick="javascript:window.close()">退出</a></div>

</div>

</div>

<!--顶部菜单结束-->

</div>

<form id="Form1" method="post" runat="server">

<div id="container">

<div class="top_banner"></div>

<div id="content">

<div class="con_outer">

<div class="con_inner">

<div class="con-center">

<div class="pt15 pb10 pr20 pl20">

<div class="chat_left fl" style=" width:633px;">

<div class="chat_pt fl" >

<div class="mt10 ml10 mb50 mr10">

<div id="chatDiv" style="overflow:scroll;height:360px;width:100%;border-color:blue;border-style:initial">

<ul id="chatbuffer"/>

<%--<li><span class="time grad">13:42</span> 欢迎 <span class="red">倾倾我</span> 进入聊天室</li>--%>

</div>

</div>

</div>

<div >

<%-- <asp:CheckBox ID="CheckBox1" runat="server" Text="停止聊天信息刷屏" onclick="Checked_Click"/>--%>

//添加一个checkbox让其根据自己要求来判断是否需要把聊天室的聊天消息刷屏

  聊天信息是否刷屏:<input type="checkbox" id="ch_Refresh" checked="checked" onclick="CheckRefresh()"/>

</div>

<div class=" pt10 pl10 pub_note">

<label id="username">输入内容: </label>

<input type="text" id="mytext" onkeydown="captureReturn(event)" class="chat_input"/>

<a href="#" onclick="sendMsg()" class="btn_ico"></a>

<div style="clear:both"></div>

</div>

<div class="note_info grad lh150 pt10">

<p>按回车直接发送</p>

<p>请文明聊天,禁止发布违法等信息</p>

</div>

</div>

<div class="chat_list fr" >

<h1>聊天室成员</h1>

<div id="userpane">

<ul id="userlist" />

</div>

</div>

<div class="clear"></div>

</div>

</div>

</div>

</div>

<div id="footer">

<!--页脚-->

<p><span>湖南省中小学教师继续教育指导中心 版权所有</span> </p>

</div>

</div>

</div>

</form>

<script type="text/javascript">

//只要进入页面就执行如下方法

window.onload = function () {

sniffBrowserType();

showLoadScreen();

setTimers();

setFocus('mytext');

}

//如果checkbox被选中则执行刷新功能,否则不刷新聊天信息

function CheckRefresh() {

var chk = document.getElementById("ch_Refresh");

if (chk.checked) {

setTimers();

} else {

ClearSetTimers();

}

}

</script>

</body>

</html>

JS文件中的代码:

//Global variables

var timeID;

var refreshRate = 2000; // two seconds

var rnd = Math.random();

var id = 0;

var isFirefox;

var isIE;

//var XmlHttp;

var AjaxServerPageName;

AjaxServerPageName = "Server.aspx";

//Creating and setting the instance of appropriate XMLHTTP Request object to ajaxXmlHttp variable

function getAjax()

{

var XmlHttp;

//Creating object of XMLHTTP in IE

try

{

XmlHttp = new ActiveXObject("Msxml2.XMLHTTP");

}

catch(e)

{

try

{

XmlHttp = new ActiveXObject("Microsoft.XMLHTTP");

}

catch(oc)

{

XmlHttp = null;

}

}

//Creating object of XMLHTTP in Mozilla and Safari

if(!XmlHttp && typeof XMLHttpRequest != "undefined")

{

XmlHttp = new XMLHttpRequest();

}

return XmlHttp;

}

// Get browser type

function sniffBrowserType() {

isFirefox = ( navigator.appName == "Netscape" );

isIE = (navigator.appName == "Microsoft Internet Explorer" );

}

// Capture the enter key on the input box and post message

function captureReturn( event )

{

if(event.which || event.keyCode)

{

if ((event.which == 13) || (event.keyCode == 13))

{

postText();

return false;

}

else {

return true;

}

}

}

//点击按扭发送消息

function sendMsg() {

postText();

}

//关闭窗口时调用后台退出用户的操作

function exitWind() {

if(confirm('你确定要退出当前聊天室吗?'))

{

id = location.search.substring(37, location.search.length);

userid = location.search.substring(1, 37);

rnd++;

url = 'ExitChat.aspx?chatId='+ id+'&userid='+ userid;

req = getAjax();

req.onreadystatechange = function(){

if( req.readyState == 4 && req.status == 200 ) {

updateAll();

}

}

req.open( 'GET', url, true );

req.send( null );

}

return;

}

// Start the update timer 刷新的时间

function setTimers()

{

//alert("cccc");

timeID = window.setTimeout("updateAll()", refreshRate);

//alert(timeID);

}

//清楚刷新时间及不刷新

function ClearSetTimers()

{

window.clearTimeout(timeID);

}

// Start to update and reset the update timer 开始更新和重置更新定时器

function updateAll()

{

//window.clearTimeout( timeID );

getUserList();

setTimers();

}

function getUserList()

{

id = location.search.substring(37, location.search.length);

rnd++;

url = 'Server.aspx?action=UserList&session='+ rnd+'&chatId='+ id;

req = getAjax();

req.onreadystatechange = function(){

if( req.readyState == 4 && req.status == 200 ) {

obj = getElement("userlist");

obj.innerHTML = req.responseText;

getBufferText();

}

}

req.open( 'GET', url, true );

req.send( null );

}

function getBufferText()

{

id = location.search.substring(37, location.search.length);

rnd++;

url = 'Server.aspx?action=GetMsg&session='+ rnd +'&chatId='+id;

req = getAjax();

req.onreadystatechange = function(){

if( req.readyState == 4 && req.status == 200 ) {

obj = getElement("chatbuffer");

obj.innerHTML = req.responseText;

//CalculateScrollTop(chatpane)

//obj.scrollTop = obj.scrollHeight;

scrollChatPane();

//FocusWindow();

}

}

req.open( 'GET', url , true );

req.send( null );

}

function CalculateScrollTop(ScrObj) {

var ObjID = eval(ScrObj);

var ScrollHeight = ObjID.scrollHeight;

var ClientHeight = ObjID.clientHeight;

var ScrollTop = ScrollHeight.scrollTop;

if (ScrollHeight > ClientHeight) {

ScrollTop = parseInt(ScrollHeight - ClientHeight);

}

ObjID.scrollTop = ScrollTop;

}

function postText()

{

rnd++;

chatbox = getElement( "mytext" );

chat = chatbox.value;

chatbox.value = "";

//alert(chat);

userid = location.search.substring(1, 37);

id = location.search.substring(37, location.search.length);

url = 'Server.aspx?action=PostMsg&u=' + userid + '&t=' + encodeURIComponent(chat) + '&session=' + rnd+'&chatId='+id;

req = getAjax();

req.onreadystatechange = function(){

if( req.readyState == 4 && req.status == 200 ) {

updateAll();

}

}

req.open( 'GET', url, true );

req.send( null );

}

function getElement( id )

{

if( isIE ) {

return document.all[ id ];

}

else {

return document.getElementById( id );

}

}

function showLoadScreen()

{

var loading = "<div style=\"text-align:center;color:red;\"><h5>loading...</h5></div>";

chat = getElement( "chatbuffer" );

chat.innerHTML = loading;

user = getElement( "userlist" );

user.innerHTML = loading;

}

function scrollChatPane()

{

var obj = document.getElementById("chatDiv");

obj.scrollTop = obj.scrollHeight;

}

function setFocus(ControlName)

{

var control = document.getElementById(ControlName);

if( control != null )

{

control.focus();

}

}

function FocusWindow()

{

//TODO: FireFox doesn't work?

window.focus();

}

最终效果如下:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐