65.9K
CodeProject 正在变化。 阅读更多。
Home

使用 Mike Schwarz 的 AJAX 库的示例聊天应用程序

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.14/5 (15投票s)

2006年3月15日

1分钟阅读

viewsIcon

118271

downloadIcon

2452

一篇关于使用 AJAX 和 .NET 开发聊天应用程序的文章。

Sample Image

引言

本文描述了一个使用 Mike Schwarz 的 AJAX 库的示例聊天应用程序。 随着 AJAX 作为 Web 的一种新的开发模式而发展,每个人似乎都对它更感兴趣。 在这里,我使用了由 Mike Schwarz 开发的 .NET 的一个 AJAX 库。 该库基本上是一个 HTTP 处理程序,它将客户端的 AJAX 请求重定向到适当的类型。 该库反过来使用 JSON - JavaScript 对象表示法,这是一种数据交换格式; 使用 JSON,我们甚至可以在客户端访问复杂的类型。

使用代码

要使用 Schwarz 的 AJAX 库,我们必须注册要与 AJAX 调用关联的类型

// Register

Ajax.Utility.RegisterTypeForAjax(typeof(Chat));

web.config 中添加一个 HTTP 处理程序部分

<httpHandlers>
    <add verb="POST,GET" path="ajax/*.ashx" 
         type="Ajax.PageHandlerFactory, Ajax" />
</httpHandlers>

您可以在库文档中找到更多详细信息。 现在,开始编写代码:该应用程序主要由两个文件组成,Chat.aspxDragAndPost.jsDragAndPost.js 包含一个发布 AJAX 请求并返回哈希表并填充开放聊天室的函数。

您将有一个上下文菜单来打开私有聊天室,您可以使用相同的上下文来邀请。 源代码非常简单,我们只需要在 JavaScript 中配置很多东西,例如在双击时打开 div 等。 请发表您的评论,以便我可以改进它。

此函数在双击聊天室时创建一个 div

function CreateDiv(DivID,Roomid)
{
    ParentElement=document.getElementById("TRCHAT");
    var Divelement=document.createElement("DIV");
    Divelement.align="right";
    Divelement.setAttribute('id',DivID);
    Divelement.setAttribute('name',DivID);
    Divelement.style.width=250;
    Divelement.style.height=300;
    Divelement.style.left=200;
    Divelement.style.top=170;
    Divelement.style.position='absolute';
    Divelement.style.background='#9fc9d3';
    Divelement.style.cursor='Move';
    ParentElement.appendChild(Divelement);
    /
    /
}
//The Drag part of Div is handled By

function movemouse(e)
{
  if (isdrag)
  {
    fobj.style.left = nn6 ? tx + e.clientX - x : 
                            tx + event.clientX - x;
    fobj.style.top  = nn6 ? ty + e.clientY - y : 
                            ty + event.clientY - y;
    return false;
  }
}
function selectmouse(e) 
{
  fobj = nn6 ? e.target : event.srcElement;
  if (fobj.parentElement.tagName!="DIV" 
                 && fobj.tagName=="DIV")
  {
        isdrag = true;
        tx = parseInt(fobj.style.left+0);
        ty = parseInt(fobj.style.top+0);
        x = nn6 ? e.clientX : event.clientX;
        y = nn6 ? e.clientY : event.clientY;
        document.onmousemove=movemouse;
        return false;
  }
}
document.onmousedown=selectmouse;
document.onmouseup=new Function("isdrag=false");

我使用了一个类似字符串构建器的类来加速客户端字符串操作

//StringBufferLikeClase

function StringBuffer() { 
  this.buffer = [];
} 

StringBuffer.prototype.append = 
  function append(string) { 
    this.buffer.push(string); 
    return this; 
}; 

StringBuffer.prototype.toString = 
  function toString() { 
    return this.buffer.join(""); 
};

历史

  • 发布于 2006 年 3 月 7 日。
© . All rights reserved.