asp.net实现QQ在线聊天程序中javascript的窗口注册机制

前段时间给公司做了一个类似QQ的Asp.net在线聊天程序,与服务器之间的通讯是通过前台页面的定时 器到服务器上的临时消息目录中取得相关信息来实现的,消息结构XML,为了避免对服务器造成太大的压 力就只开了一个定时器,也没敢多开,程序完成后由于测试条件限制只在少的可怜的几台机器上测试了一 下,效果还算可以吧,目前能实现发送文字,图片,文件查看历史记录,网络硬盘等基本功能,由于聊天 窗口是嵌套在公司主框架里面的所以得实现聊天主窗体和聊天窗体以及一些其他窗体之间指针的引用问题 ,避免某个聊天窗口被打开多次,或者聊天窗口而主窗口也不知道的问题,下面介绍下程序中用 javascript实现的窗口机制:

看其他人的程序是很困难的,所以先介绍下例子实现的效果:首先创建一个 MainFrm.htm窗体(启动 窗体),用它打开a.htm窗口,a.htm窗体只能打开一个,在a.htm窗体中可以打开b.htm和c.htm,当然 b.htm和c.htm窗口也只能打开一个,然后当MainFrm.htm关闭时让a.htm,b.hml和c.htm也跟着关闭,或者 a.htm关闭时让b.htm和c.htm也关闭

1、MainFrm窗体

为了方便应用,我对数组方法进行扩展,添加了add,remove,clear三个方法

代码

if (!Array.prototype.add) {
     Array.prototype.add = function() {
         var startLength = this.length;
         for (var i = 0; i < arguments.length; i++)
             this[startLength + i] = arguments[i];
         return this.length;
     };
}
if (!Array.prototype.remove) {
     Array.prototype.remove = function(index) {
         if(index>=0 && index<this.length)
         {
             this.splice(index,1);
         }
     };
}
if (!Array.prototype.clear) {
     Array.prototype.clear = function() {
         this.splice(0,this.length);
     };
}

定义一个存放注册窗口的缓存数组

//已注册的窗口数组
var g_oWindowArray=new Array();

时间: 2024-10-01 04:58:45

asp.net实现QQ在线聊天程序中javascript的窗口注册机制的相关文章

微信公众平台中添加qq在线聊天代码

微信公众平台是个不错的媒体,可以和你的小伙伴们即时交流,但你的小伙伴们是用手机上的微信,打字自然就慢了:有人说用微信网页版,那个也不习惯,再说也不一定所有人都知道网页版微信.(2014.01.22更新:网页微信客户端也得用手机先扫描一下,如果较早的手机不支持微信功能那就登录不了.好在微信电脑版即将推出了)  QQ是众所周知的,何不在微信公众平台中添加qq在线聊天代码呢?方便你的受众.20140702微信公众平台改版,终于支持图文消息链接 那么,如何在微信公众平台中添加qq在线聊天代码呢?(由于腾

在网络聊天程序中怎么自动侦测局域网内部启动该软件的用户

问题描述 在网络聊天程序中怎么自动侦测局域网内部启动该软件的用户 在网络聊天程序中怎么自动侦测局域网内部启动该软件的用户,用java语言实现 解决方案 只能说思想,计时器 客户端发送数据到主服务器

如何用c#实现聊天程序中显示本机Ip的功能?

问题描述 我的意思是:如果用c#编写一个简单的聊天程序,希望在你发送信息的时候,对方可以收到发件方的IP.而自己方面也可以在消息栏看见自己发送的IP.简单的说问题就是这样.至于如何实现在消息框实现既可看到自己发送的历史信息也可以看到对方发送过来的信息,这个问题本人已经解决.希望大家多多赐教,本人菜鸟一个. 解决方案 解决方案二:IPAddress[]ip=System.Net.Dns.GetHostAddresses("localhost");但是只能取道网卡的IP

在控制台程序中隐藏控制台窗口!

大家都知道,当编写一个win32 console application时,当运行此类程序的时候默认情况下会有一个类似DOS窗口的console窗口,但是有的时候我们只想在程序中运行一段功能代码,不希望显示这个console窗口,让代码执行完毕之后程序自动退出. 下面就介绍一下,如何隐藏win32 console application的console窗口 因为此种方法是通过设置编译器的链接开关来实现,所以让我们来看一下编译器的链接开关选项(也就是linker选项). 首先我们来看一下linke

如何在VC中实现软件的注册机制

现在网上下载的软件大部分都需要注册后才能使用其全部的功能,也就是说当前大部分软件都是建立了注册机制的,对于一个刚进入软件行业的程序员来说一定非常想了解其中的注册机制是怎样实现的.其实用VC开发软件,是可以很方便地加入注册机制的. 要实现软件注册功能,首先需要知道实现注册机制要涉及到的几个问题:1.如何加入注册检测,判断软件是否注册:2.如何生成注册码,如何保证一个用户名只生成与之唯一对应的注册码:3.在软件不注册情况下,如何限制软件功能的局限性:4.对已经负费使用用户而言,不应造成使用不便. 首

asp.net基于C# Socket聊天程序(一个服务端,多个客户端)

部分代码: 命名空间:  代码如下 复制代码 using System.Net;  using System.Net.Sockets;  using System.Threading;  using System.IO;  mainform.cs  代码如下 复制代码 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawin

简易聊天程序中,C/S架构中C端通过能实现断开重连,为什么重连后不能接受服务端的对象。

问题描述 C/S描述:C端发送文本对象到S端,S端接受文本对象,并负责将文本对象发送到每个C端并显示.问题:现在通过try/catch捕获socket连接异常后,用调用原来的连接实现重连后,S端能接收到C端的对象且能将文本发送到C端.但是C端的接收消息的线程好像不能被重新打开,即C端不能接收S端的对象了.C/S架构中C端通过能实现断开重连,为什么重连后不能接受服务端的对象.importjava.awt.*;importjava.awt.event.*;importjava.io.*;import

当php程序中需要客户窗口的分辩率时,可以这样

程序 <?phpif(!$_GET["screenX"]) {echo '<script>location = location.href+"?screenX="+screen.width+"&screenY="+screen.height;</script>';exit;}$screenX = $_GET["screenX"];$screenY = $_GET["screenY

仿QQ的开源在线聊天工具

问题描述 谁能提供一个仿QQ的在线聊天工具,要开源的,谢谢了给个下载网址就行 解决方案 解决方案二:好像加不了份解决方案三:http://www.jiamaocode.com/ProCts/1204/1204.html不知道和你期待的差多少解决方案四:我这边有个,不过问题是,登陆要连接数据库的,我没修改数据库,所以没登陆成功过,不知道实际情况如何,你要的话加我QQ,170334233.工程文件解决方案五:我有个734942189解决方案六:http://www.rayfile.com/files