关于作者

仿真windows窗口类Jwindow

上一篇 / 下一篇  2007-03-15 14:10:07

查看( 2025 ) / 评论( 11 )
正考虑做一个web聊天的东东,打算用它做客户端容器
V1O5U6l+o7u[*m0部分代码参考DronFw里的代码,大家批批无忧脚本7e? {IY!n&A*C
只能应用在XHTML下,没有考虑HTML4.0的兼容性,感兴趣的只要稍作修改就能用在HTML4.0下无忧脚本&jxS4M#t!S'^#rg9pY
转载的朋友请保留作者信息

CODE:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">无忧脚本wiy`2s#qk
<html xmlns="http://www.w3.org/1999/xhtml">
PlN$r#QI(F:A$q Y*[0<head>无忧脚本 c8g}&pi }E
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
)zye@#h'H;d,[0<meta name="author" content="brull@163.com,brull">无忧脚本t4p8_0| bJ[TT
<scrīpt type="text/javascrīpt">无忧脚本k3W?zC|jKx
/**
;|pd+Ngdl0*JWindow,Jchat窗口类无忧脚本 A+O:q!dz8||@
*version 1.0无忧脚本o0tS\ wv5h
*@author brull无忧脚本A){'H(|wd ]
*@email brull@163.com无忧脚本)T;U!ezE D0c
*@date 2007-01-31无忧脚本[(W,lwU#a
*/无忧脚本` @/r*z'i^Y1[C~4C}

:mBbZ3Il|0/*无忧脚本1\]3MD;F!IC
*新建一个窗口视图,并显示在浏览器容器里无忧脚本cPx u2mZ%}q
*类里有实例方法,min、changeStatus、close、drag无忧脚本2U`HG1P6c:[p:_
*/无忧脚本1@?x"A&E7A%HlM7VE
JWindow = function (win_obj)无忧脚本W }mEp}o
{
5F3W(h^.ax0        /*
"w nY Q+S8GY _ _0        窗口存在判断无忧脚本2t$L%RE c
        如果窗口存在则只是显示它,并将它置为当前窗口无忧脚本:h4a W%K_P
        */无忧脚本\:K_P)qM1P5V DO
        if(document.getElementById(win_obj.id)){//窗口已存在无忧脚本DT'KT$pj
                var existWin = document.getElementById(win_obj.id).quote;//存在窗口的引用
cL v/c6N!n| RU0                if (JWindow.curWindow != win_obj.id){//窗口不是当前窗口无忧脚本R9N2y7i;Y$Z _@
                        if (existWin.contain.style.display == "none"){//窗口是隐藏的(MIN,CLOSE),窗口隐藏时标题活动样式不变
|aG { yI0                                existWin.status = existWin.oldStatus;//还原原来状态
6d5{k1]+w nY+V0                                existWin.contain.style.display = "";//显示窗口
zc nS)G P l+m0                                JWindow.curWindow = win_obj.id;//设置为当前窗口
CR0n5o eb6M+Kfj r0                                me.previous = JWindow.curWindow;
3PSD*plJ0                        }
u's&SP q^#?0H0                        else {
1B X0GD7DN,wi0                                document.getElementById(JWindow.curWindow + "_caption").className = "win_caption_deactive";//设置当前窗口为非活动窗口样式
Yx$a]Y!G-v U |k,w0                                document.getElementById(JWindow.curWindow + "_task").className = "task_button_deactive";//设置任务栏按钮为非活动按钮样式无忧脚本2M(G3mLd:u6?p"Q#k
                                JWindow.curWindow = win_obj.id;//设置为当前窗口无忧脚本*p.M"I)kO?"h1uof
                                document.getElementById(win_obj.id + "_caption").className = "win_caption_active";//设置窗口为活动窗口样式
mY'mD1h6n0                                document.getElementById(win_obj.id + "_task").className = "task_button_active";//设置任务栏按钮为活动按钮样式无忧脚本i;HuF.F.K6v)^0M
                        }无忧脚本"N5nN dc*m V&mW*sC
                        existWin.contain.zIndex = JWindow.zIndex++;//窗口上移到层最顶端
mg,g"Z[4w0                }
y#Rs&kK6H3t0                return;无忧脚本'P5rC;e]0Eq n9CK9Kq R
        }
-Fs \c'L}0无忧脚本R mV? @Q/fX
        /**********创建窗口******************/无忧脚本\4w5Lv$U
        var win = win_obj;//包含窗口属性的原生对象无忧脚本xF7g2P~
        var isIe = /msie/i.test(navigator.userAgent);//是否是IE浏览器
2`!t9Gavuc0        this.contain = document.createElement("div");//窗口容器
&R1O,CVrF0        this.id= win.id;//win_obj没有默认值,初始化时win_obj必须有id属性
{.nz)sj6G;fY0        this.width = win.width?win.width:420;//窗口宽,默认为420无忧脚本v ZY)AV
        this.height = win.height?win.height:360;//窗口关,默认为360无忧脚本2af*b h:ou0bK4b
        this.left = win.left?win.left:(document.documentElement.clientWidth-this.width)/2;//窗口左上角距离浏览器左边框距离,默认居中
*v:]2v)i6i}0        this.top = win.top?win.top:(document.documentElement.clientHeight-this.height)/2;//窗口左上角距离浏览器上边框距离,默认居中
CElx:TZ0        this.oldLeft = this.left;//记录窗口最大化时窗口左上角距离浏览器左边框距离
@.H!i$IE EL,s0        this.oldTop = this.top;//记录窗口最大化时窗口左上角距离浏览器顶边框距离无忧脚本3MT#B#h8Ot9U&{u
        this.title = win.title?win.title:" ";//标题,默认为空无忧脚本2Am y.`R
        this.content = win.content ? win.content : "";//窗口内容,默认为空无忧脚本5d2yrt@ aI)j
        this.icon = win.icon ? win.icon : "http://www.51js.com/attachments/2007/03/35270_200703102258421.gif";//窗口图标无忧脚本6h;~tD0B9x ^/M!g V
        this.minButton = (win.minButton == false) ? false:true;//是否显示最小化按钮,默认显示
U M~OF0        this.maxButton = (win.maxButton == false) ? false:true;//是否显示最大化按钮,默认显示无忧脚本3T3b1[ Se!y7C0f0qb
        this.closeButton = (win.closeButton==false) ? false:true;//是否显示关闭按钮,默认显示
-~C|4d-KNBx0        this.status = "NORMAL";//窗口状态,包括MAX,MIN,NORMAL,CLOSE
+[h:Pa U"\ I0        this.previous = JWindow.curWindow ? JWindow.curWindow : null;//上个当前窗口,在窗口关闭和最小化时有用
7tU2IfB2b0        win = null;//释放对象
Y%rd?'s9]B8I0        var me = this;//对象引用,方便类内部引用无忧脚本:AO/h nIf Z([R
无忧脚本e.O(DX9h K
        /*************生成窗口视图******************/
F8e7WDV%Uhr*G_0        me.contain.id = this.id;
:@5q}F_+x0        me.contain.quote = this;//对象引用,方便应用页面引用无忧脚本*d/U(CjtF
        me.contain.className="win_contain";
5N:` o7P N.W0        with(me.contain.style){
^+Hx'I8W{Z2W0                position = "absolute";无忧脚本7z:d%j-R%zW
                left = this.left + "px";
&e.g&v8^b&@0                top = this.top + "px";无忧脚本i;VzH/R%y7Uya
                width =this.width + "px";无忧脚本B2X:j%oka7YN I"tC
                height =this.height + "px";
iE0K | L/hR9W Id8o8O0                zIndex = JWindow.zIndex++;
qU(h;z&n$T0        }
4XM&[I}a0        me.contain.innerHTML = "\无忧脚本6d8zD$oR.{TT
                <div class=\"win_caption_active\" id=\"" + this.id + "_caption\"" + " ōndblclick=\"document.getElementById('" + this.id + "').quote.changeStatus('" + this.id + "')\">\
/Aa T1Mf0                        <img src=\"" + this.icon + "\" class=\"win_icon\" /><span class=\"win_title\">" + this.title + "</span>\
*Ff i#zqo"`3EF`0                        <div class=\"win_button_div\">"无忧脚本0jm'Rb3y)`c7W
                                +(this.minButton ? "<input class=\"win_min\" type=\"button\" title=\"最小化\" ōnclick=\"document.getElementById('" + this.id + "').quote.min();\" />":"")无忧脚本AD+r,[A(E/g]7Pn${
                                +(this.maxButton ? "<input class=\"win_max\" id=\"" + this.id + "_maxbutton\" type=\"button\" ōnmouseover=\"this.title=(document.getElementById('" + this.id + "').quote.status=='MAX')?'还原':'最大化'\" ōnclick=\"this.blur();document.getElementById('" + this.id + "').quote.changeStatus();\" />":"")
VL&m/ae+GW0                                +(this.closeButton ? "<input class=\"win_close\" type=\"button\" title=\"关闭\" ōnclick=\"document.getElementById(\'" + this.id + "\').quote.close();\"/>":"")
VX-e'Q3ip LB H-m$~0                        + "</div>\无忧脚本M.jD"cP_]sSUh
                </div>\无忧脚本?(Z^ iR
                <div class=\"win_body\" id=\"" + this.id + "_body" + "\">" + this.content + "</div>\无忧脚本!I-\Mc#Lu,J*sc
                ";
$t"X3_H;HlAAp(}v0
-| kF~P} AW,K0        /***************注册窗口事件************************/无忧脚本\ WHgM8~ ]
        me.contain.onmousedown = function (e)无忧脚本;WZ1[ BB-V
        {无忧脚本5lUVw3@{5? n
                e = e || window.event;无忧脚本X|,]5Q7d\
                var srcElement = isIe ? e.srcElement : e.target;无忧脚本K rC;b1F9h-`_
                if(JWindow.curWindow != me.id){无忧脚本(XEyE'R/n
                        me.contain.style.zIndex = JWindow.zIndex++;
Dww}ec3p_4y0                        document.getElementById(JWindow.curWindow + "_caption").className = "win_caption_deactive";无忧脚本?.a:I#_{h%C#k+tUzf-k
                        document.getElementById(JWindow.curWindow + "_task").className = "task_button_deactive";
0at {XoO1Ha0                        me.previous = JWindow.curWindow;无忧脚本F$n+Q]*Q
                        JWindow.curWindow = me.id;//设置为当前窗口无忧脚本1@:Qz8{x_A*cy
                        document.getElementById(JWindow.curWindow + "_caption").className = "win_caption_active";无忧脚本,hz\Fus
                        document.getElementById(JWindow.curWindow + "_task").className = "task_button_active";
9oK%BM y%\4`W/r0                }无忧脚本Mby7U;Kp
                if (me.id + "_caption" ==srcElement.id && me.status == "NORMAL") me.drag(e);无忧脚本4r/r"@C#Rx3WbPe
        }无忧脚本D8dF^ ^1V

ip$H2` @z Zm9i0        /***********添加任务栏按钮**********/无忧脚本E$gk2s|/Cd
        var task = document.createElement("button");无忧脚本:ML pVmn
        task.id = me.id + "_task";
"VeV J\k cZ0        task.title = me.title;无忧脚本1HC pF(cEB.u
        task.className = "task_button_active";
H0o(M;G0c0        task.innerHTML = "<img src=\"" + me.icon + "\" class=\"task_icon\" /><span class=\"task_font\">" + me.title + "</span>";
z+]R-xR0        task.onclick = function () {无忧脚本y JY-f)a"C%ks.Io'a g
                   task.blur();//丢掉讨厌的虚线框无忧脚本Bt$}?+x
                if(JWindow.curWindow != me.id){无忧脚本Y@q0jf2l#a$e(C\6v
                        me.contain.style.zIndex = JWindow.zIndex++;
v| aMK`0{j c0                        document.getElementById(JWindow.curWindow + "_caption").className = "win_caption_deactive";
+z [ y r5KDZ5M0                        document.getElementById(JWindow.curWindow + "_task").className = "task_button_deactive";无忧脚本Ky n$F&]5\Ox
                        me.previous = JWindow.curWindow;
x;m^ Ot0                        JWindow.curWindow = me.id;//设置为当前窗口无忧脚本Cknw_r4FdMj ^
                        document.getElementById(JWindow.curWindow + "_caption").className = "win_caption_active";
*~5rz R^(rD0                        document.getElementById(JWindow.curWindow + "_task").className = "task_button_active";无忧脚本!` tU.dL
                        if(me.status == "MIN"){
N*`KW4~%TQ0                                me.status = me.oldStatus;//还原原来状态
V qNd-w0                                //document.getElementById(me.id + "_task").className = "task_button_active";无忧脚本mhGV4@ C7^S
                                me.contain.style.display = "";//显示窗口
${ J}9Vbnqj0                        }无忧脚本 F\%M[0lm%| qwb
                }
tO6V.rK$|r!N0                else if(me.status == "MAX" || me.status == "NORMAL") me.min();无忧脚本b(H(z\K
                else if(me.status == "MIN") {
r n5[#py+I1^1IPb8?+[0                        me.status = me.oldStatus;//还原原来状态无忧脚本5TEwB%j/n*v,I
                        document.getElementById(me.id + "_task").className = "task_button_active";
+E`/i4MO!B6f0                        me.contain.style.display = "";//显示窗口
lgcz Y3q4x#b0                }
6gkHc"cI0        }
"YSufcod0        if(! document.getElementById("task")) JWindow.createTask();无忧脚本E B'oX9P0E2uW
        document.getElementById("task").appendChild(task);无忧脚本N#etd2wg/Vyn
        document.body.appendChild(me.contain);//将窗口放入浏览器容器
c PR S(n%I ?VJ0        if (document.getElementById(JWindow.curWindow) != null){ //当前窗口不为空无忧脚本C.w5?M-hwA
                document.getElementById(JWindow.curWindow + "_caption").className = "win_caption_deactive";//设置当前窗口为不活动状态
0H;O(~c;cpJ+v"e0                document.getElementById(JWindow.curWindow + "_task").className = "task_button_deactive";
;RmP[!^0        }无忧脚本!|BNeJ~5M;`g8X r
        /***********设置为当前窗口*************/
U8eB^8R.`%o9v0        JWindow.curWindow = me.id;
6F p.l3\/A7x0无忧脚本c8hmA0Wb#sbP
        /***********对象方法*************/
n!ZVD+S-N7vW0        this.drag = function (e)无忧脚本 VA1tqG#AA+B
        {无忧脚本 z&v&Y S8Q$w/y(s Pq
                var w = me.contain;
$T"x+l R_0{ Y k0                var relLeft = e.clientX-parseInt(w.style.left);无忧脚本(Up*uBM%Yt
                var relTop = e.clientY-parseInt(w.style.top);无忧脚本$I!l!m2H/c7`Ry
                //每次拖动都注册事件,然后再注销
/u3O%ozAU0                document.onmousemove = function (e)
&M [6@] tm0                {
X,kgQD0Ut0                        e = e || event;无忧脚本-nM^T{V-p
                        if(w !=null){无忧脚本Q o~(h!SZDa
                                w.style.left = (e.clientX-relLeft) + "px";
:cIAP'g+a(`-i0                                w.style.top =  (e.clientY-relTop) + "px";无忧脚本x:XV~,Wk^6HbIN
                        }
{t8]M3jYo,I0                }无忧脚本5EG a zDV
无忧脚本Mvd1fS N/]$y
                document.onselectstart = function ()
7G:i$HBp})U5cN.Il0                {无忧脚本bE7cY;x3v4B
                        return false;
kkw:F8XA,MG_*^0                }
)l`S.iG{V0                document.onmouseup = function ()无忧脚本 S*XN'UQc
                {无忧脚本O+~"D o'^p+Ir8`#X
                        w = null;//释放拖动对象
kgDst~xT4L(^0                        document.onmouseup = document.onmousemove = document.onselectstart = null;//注销注册事件,包括该事件本身无忧脚本o OOx1?9n
                }
@3T;O7NP}m7N8l0        }
c ]*r"Q[U/\5{0this.min = function ()
:gW v4mIC0S0        {无忧脚本 FPX1q"J%xM1] C
                if(JWindow.curWindow == me.id && this.minButton){
qm6l7RX}0                        me.contain.style.display = "none";//只是隐藏而已^_^
:\pM@ ~[qP!E0                        me.oldStatus = me.status;//保存最小化前的状态
_3O$~"k7BJ]0                        document.getElementById(JWindow.curWindow + "_task").className = "task_button_deactive";
OG:m,Ktt$O4[ ^0                        me.status = "MIN";无忧脚本v Sm,_m3V
                        if(me.previous && document.getElementById(me.previous).quote.contain.style.display != "none"){
];X_wZ0                                JWindow.curWindow = me.previous;//设置为当前窗口
N9r0XQ |/eV)o0                                document.getElementById(JWindow.curWindow + "_caption").className = "win_caption_active";无忧脚本Bx7m9r L-?t@
                                document.getElementById(JWindow.curWindow + "_task").className = "task_button_active";
sy0DebN^3W U0                        }
5cta|KF0                }无忧脚本+_ ].aaQ}
        }
D#k4Ev;n&X-ZO5u*A0
4|E1D K%~+w3L$V0        this.changeStatus = function ()无忧脚本+\@6{m,a1n
        {
0X+y6z x0r0                if (me.status == "MIN"||me.status == "CLOSE") return ;无忧脚本8w;W)BqVPeJA
                if (me.status == "MAX" && this.maxButton)
TCS$AV6@.SG0                {
V,G,@+F1O^!j0                        with(me.contain.style){
/nX$u Q~EA9F0                                left = me.oldLeft + "px";
&D3v.iI!TD0                                top = me.oldTop + "px";
u}JjXQmM0                                width = me.width + "px";
4Cr,lP/N0                                height = me.height + "px";
$uAA/d+q"`C(_0                        }无忧脚本+kJidO
                        document.getElementById(me.id + "_maxbutton").className="win_max";
1DHv*tc6{D6Ic bc k8AX{0                        me.status = "NORMAL";
2y7c'eg.Y"V [b0                }无忧脚本5O J j!TXO
                else if(me.status =="NORMAL" && this.maxButton)
3_k,d0X$Jmb1m] W0                {
f`%j#S^(W0                        //记录窗口位置,方便窗口还原大小时定位
tc py0H9YwD0                        me.oldLeft = parseInt(me.contain.style.left);
\U cm Eq"].Ro0                        me.oldTop = parseInt(me.contain.style.top);无忧脚本/xcTG_nmE*EN
                        with(me.contain.style){
{K_P+]}e9Z u2o0                                left = 0;
8X*C)Y9H8w!Vv0                                top = 0;无忧脚本%I-{'p"vT4_#~
                                width = document.documentElement.clientWidth + "px";//only for XHTML
:EQ&_!c[UB-\v_!u4W0                                height = (document.documentElement.clientHeight-document.getElementById("task").offsetHeight) + "px";//only for XHTML无忧脚本L W#B^@)t+P
                        }无忧脚本7{9B+[J.D[9hh
                        document.getElementById(me.id + "_maxbutton").className="win_res";无忧脚本}YX,}o[]-y/{q%V
                        me.status = "MAX";无忧脚本@t+@(m\i
                }无忧脚本!q j0tc#Ad
        }
i&o,O H6U+]0        //窗口关闭无忧脚本h AS Q"|J2\Y}
        this.close = function ()无忧脚本r(aLe1o;b3O8U
        {
me x5@7w#P1he%p0                if(JWindow.curWindow == me.id && this.closeButton){
5Y}Et3Lr0                        document.getElementById(JWindow.curWindow + "_task").style.display = "none";无忧脚本*?6k?WF)a"~
                        me.contain.style.display = "none";//只是隐藏而已^_^
;k*_tR)]N0                        me.oldStatus = me.status;//保存关闭前的状态
\'zn\z*g[@Ps0                        me.status = "CLOSE";无忧脚本 }/A4`$t"ukRX
                        if(me.previous && document.getElementById(me.previous).quote.contain.style.display != "none"){无忧脚本])v/u;R&cKe
                                JWindow.curWindow = me.previous;//设置为当前窗口无忧脚本8J9D*^1Q0i7Q+R
                                document.getElementById(JWindow.curWindow + "_caption").className = "win_caption_active";
/G T$@X`'m%x0                                document.getElementById(JWindow.curWindow + "_task").className = "task_button_active";
7M\E/_ A0                        }无忧脚本T+e&[p4X:nR?
                }无忧脚本FT [z-F
        }无忧脚本T5q ~'X [oq3R
}
.P`0j;J*N3?0/***************静态属性和方法***********/
!HQ*| @k!ryy0//静态属性
|p9Z2qFI:OQ1p%E'J U0JWindow.zIndex = 100;//初始zIndex,任务栏的zIndex为30000,每点击一次窗口窗口zIndex自增1,也就是用户最多可以点击窗口29900次,应该已经足够
9M9E@If7M0JWindow.curWindow = null;//当前活动窗口无忧脚本*wgLMo$s:b)b
/*********静态方法**********/
.nISNJ@ Eq0//创建任务栏
LT(| UQ0JWindow.createTask = function() {
#I] bA{I#wYH-j0        var task = document.createElement("div");
x%_ Xhc%V1B r1FDh0        task.id = "task";
D8|+NC9ysp v0        with (task.style) {无忧脚本*{qD8E\(DVo
                position = "absolute";
dh~'L$j0                height = "20px";
;{X&}c5X:XQS&A0                width = document.documentElement.clientWidth + "px";无忧脚本S3[SD m
                left = 0;无忧脚本pPci[\$Du.g5H
                bottom = 0;无忧脚本cx:k2~1H$c |t C
                padding = "1px";无忧脚本9AKeV\t.@3p*vc
                border = "1px solid #EEE";无忧脚本H |,] a k^+z1G
                background = "#CCC";
9R"xEq6w$Z:M@0                zIndex = 30000;//设置一个比较大数,使其永远位于最上层
z ]L2D`0        }无忧脚本1I(CK0X0c:v5GU6TC'I
        document.body.appendChild(task);
bD-uK{+x^#E:M\w0}
px@~ ID9t#r0
%t9s7u)t4k0/*非本类方法,但是在这里编写可读性比较高
gmzCe&`lx0*注册系统事件
2?:_/^.]7Rf#|%A$Q0*/
"vg^1B}"Et0/***********注册事件,在浏览器窗口大小调整时对任务栏的位置和宽度进行相应调整*********/
;i-_9con0window.onresize = function () {
lEIn:IncVM }#D0    with(document.getElementById("task").style){无忧脚本,n`m_^'`#s
                width = document.documentElement.clientWidth + "px";
qvnf k4d-~+p0                top = (document.documentElement.clientHeight-parseInt(height)) + "px";无忧脚本yj7T(T"]5O }
        }无忧脚本,b X1z XV
}无忧脚本q+[jQD*G u/lL
</scrīpt>
`"b0uYLV0<title>web online communication</title>
^4ED @~:b)Q;k!I0<style type="text/css">无忧脚本5q!IT5Z f5F9l
/*Jchat 客户端默认样式表*/无忧脚本%}"d ~jf
html,body无忧脚本%A}6G r F~n(b'SBz
{
p \;a@bR0        height:100%;无忧脚本 b`6[Mt6c)IQ
        width:100%;
S8v(R(_ N7T{0]0        overflow:hidden;无忧脚本0J*j S,_3]{ E'} oD
        border-width:0;无忧脚本5p2CK!{(g8[']b
        background-color:#336699;
S(xNFa+c0        margin:0;
,}.R%cR0s0z mD0        padding:0;
&T;zb&Rbukz0}
7mQGZ7]8b_e0
X?&})nzq:a0/*窗口容器*/
;Y,[6`P3Jd Z x0.win_contain无忧脚本@g)S8C|~)o
{无忧脚本/^9U H-o6}
        border-width:2px;无忧脚本'P0V:H"iO#T7_%z
        border-style:outset;
:fIN!CFu0        border-color:#D4D0C8 #404040 #404040 #D4D0C8;无忧脚本3u@tC'_o}
        cursor:default;无忧脚本r#d h7gnb
        background-color:#CCC;
`0u9n:J|?]2Z0}
e&RC_`{0无忧脚本:VU5W6L*c
/*活动窗口标题样式*/无忧脚本hu+a[K,n4K3z
.win_caption_active无忧脚本jy_!vMAe'W
{无忧脚本i/O|}(uf#^6O
        width:100%;无忧脚本tJ d!_a'`s1`
        height:18px;无忧脚本 qup(c S%Y_
        font-size:14px;
pqX^}0        background-color:#69C;
*h"HF{"cJ}4P0        filter:progid:DXImageTransform.Microsoft.gradient(startColorStr=#10246B,endColorStr=#a5cbf7,GradientType=1);
F*D,Lr.|V0}无忧脚本\'`-LU Csa5|

"M{r'X4eVZ0/*非活动窗口标题样式*/
S;X;La+U9zj0.win_caption_deactive
u6G!GT:nr"z0{无忧脚本Sr@ pBv8P
        width:100%;无忧脚本*N\#X+n1{x
        height:18px;无忧脚本'x*c4vCAW H S
        background-color:#808080;无忧脚本C"Mm!aG+N4e2N;Lc.\!p
        font-size:14px;
b5~yVx`8i;_.`K0        filter:progid:DXImageTransform.Microsoft.gradient(startColorStr=#848284,endcolorstr=#c6c3c6,GradientType=1);
5ghN`x{&@0}无忧脚本8F*hT C.K8D/}8{
无忧脚本L9t n%{3\-m
/*窗口窗体样式*/
ks3\SY&c i f)}0.win_body无忧脚本AI a!A iy
{
P wQBzJ0        width:99%;无忧脚本 \@"p&~]9Da `
        height:340px;
zi`F v@^3p j0        padding:2px;
)PxT"t9FCp"u0        overflow:hidden;无忧脚本Vq,xZ9h7tn
}无忧脚本DZIw{:C7GR p$Bo

vLs;F L6r0/*窗口图标样式*/
9^C8B??)O,Q0.win_icon
+O\5d'Bn+aI!N0{
c&^ftV\ VF0g0        padding:1px;无忧脚本4LgZ2pb0u,y K"?
        vertical-align:text-bottom;
2Cx0V$F3i-g1d\/kf0}
Q7mgA'K+w(N0
JkX C3S+n-|M0/*窗口标题样式*/
3@\/N q)s C0.win_title
"Xi&[ n i}!F%V0{无忧脚本*HPNTNy
        color:#FFF;无忧脚本Rw#U#k@nyb
        /*font-size:14px;*/无忧脚本-a"V-|K;h%Oh
        font-weight:bold;
U"fS+f)a M2W1h$|+? c0}无忧脚本wNNxS&`

D(Mj Q3xA'z0/*窗口按钮层样式*/
-Q|+Q7kx(|2X1?X0.win_button_div
#aB+X!b9Y!iE.Ily0{
FKhl*X jKc_p#B0        display:inline;
#G iZ$h]$}U0        position:absolute;
"FYc,TQ"@S*I%HL L7n0        right:0;无忧脚本#J\]?h6XX
        padding:2px;
*TIXG Q*r9R0}
\^y;gCV0
'Q]"yJ"s:q:h0/*窗口按钮样式*/无忧脚本&Xea8h\tc0A'}
.win_button_div input
&Z2U2bkN l0{无忧脚本_(L3I`4TY~ f
        width:16px;
_u;oq`1X;b{^Z0        height:14px;无忧脚本:N/]Hn7LXEei
        background-color:#CCC;无忧脚本2G7F!vv*Oz"[
}
3h_i$Ic6os/z0无忧脚本 J2B#PR-N3N
/*活动任务栏按钮*/无忧脚本 o,yp lbR,F
.task_button_active无忧脚本1sR#UYCmEa
{无忧脚本&y%]K ]Ns6u
        border:2px inset;
#rDS.\$[R0        width:100px;无忧脚本)yr7BA8zX~
        height:20px;
},Xz0Bv0        text-align:left;无忧脚本7C7w q U2j v
        margin-left:3px;无忧脚本eO*g)k,j@2Y)R"M
        padding:0px;无忧脚本5x6|Q]B
        overflow:hidden;无忧脚本&w#Ps-Rz?
        background-color:#CCC;
Z\6`]bLd(Ga0}
)xV"g!k-g(?:a0
E r;g4R^c!aT0/*非活动任务栏按钮*/无忧脚本yNnc h%c?]X$Q
.task_button_deactive
'Z P.K^2yN.rL*~0{
tzF]6kL!Xn0        width:100px;
nNN e8ce*C8I^7E0        height:20px;
Mh0Jn5On3auFW0        text-align:left;
D[&Tn#c}0        margin-left:3px;无忧脚本7@ O HIadoC(Y
        overflow:hidden;无忧脚本|4q$V-a9ABu
        padding:0px;
"C q2LH/?+}'VTL0        background-color:#CCC;
*y \ OkJ3O%R0}
o0W.C:Li,}(^0
2V3O0t)CpJ(n/F/r ?zm0/*任务栏按钮文字*/
F:G&X\zo~.T~0.task_font
s%j7`)e9wH2N;@)E w0{
'E1D;K9U5u f;R.a0        font-size:12px;无忧脚本S)\2Ai4c:m1S bE3D
}
`._0r v[0
uo)?$b{!PJ-ld$u0/*任务栏按钮图标*/
Z0|G~8~X0.task_icon无忧脚本]TH D'A)he+e
{
t#aBM SZ~"v'_ l0        vertical-align:bottom;无忧脚本P Zs&h8b-Cr ADo4l
}
R:ixa'I"I3|0
1_(I bH2g8[$}7L^0/*聊天内容窗口*/
(nt&Y(\2Sd4p/{0.chat_frame
RHP,^6`'nr7c3~0{无忧脚本G;JyTFK_
        width:100%;无忧脚本)uXp3lps
        height:240px;无忧脚本J"M|3dH\XV
        background-color:#FFF;
{^!k \n Tui,C0        word-break:break-all;无忧脚本8bP3U)b`3q
}无忧脚本#z5C0o*T'_d%s Qbrq
.editor_frame无忧脚本wq)~,Z(h@?3uU
{
C3k0]PE)n0        width:100%;
TIc+SCs&ly H0        height:100px;
3A:nt,CT0        background-color:#FFF;无忧脚本.z \N8VQR7Q G
        word-break:break-all;无忧脚本t^\PU@}p|
}
%R p6M^9U3NI!`'U0/*窗口最小化按钮样式*/
K;?L)E#_9wD^'^y0.win_min
.^1Uh&?o2W0{无忧脚本\kz"L|?"\H T
        background:#d4d0c8 url(http://www.51js.com/attachments/2007/03/35270_200703102256511.gif) no-repeat  center center;
-d$MmZ%A2c"o0}
v[A:KR!KY5?Nn}.e0
;K(wLDH"^p0/*窗口还原按钮样式*/
p/L:_ w0a!tCL5h0.win_res
&HR!{yTQ7M&s;M0{
1`3TDB(p\6r$Z0        background:#d4d0c8 url(http://www.51js.com/attachments/2007/03/35270_200703102257161.gif) no-repeat  center center;
9v"b bL8N.J ^t0y0}
D5Q2A P w K-V#q0
v {1@9y!c0/*窗口最大化按钮样式*/
LRK'JY c0.win_max
BO8YzB0{
WJ MHx!@awY;D1X0        background:#d4d0c8 url(http://www.51js.com/attachments/2007/03/35270_200703102256581.gif) no-repeat center center;
9}W8Vcw]t%G0}无忧脚本]C(I5a,S/?(`

"l~-t,V(C:? k%_0/*窗口关闭按钮样式*/
2tq3n7h bR0.win_close
fZ DxT{'zC.Gp0I0{
m#UiB(j%`0        background:#d4d0c8 url(http://www.51js.com/attachments/2007/03/35270_200703102257331.gif) no-repeat  center center;
4|0BU4W)b+K0}
k/r D(U3T5dS0</style>
q;]]#zX6b)I0</head>
V WM~T#G0<body>
4s zg+G$X0<scrīpt type="text/javascrīpt">无忧脚本u Tw Y6v}
        /*******用户程序*********/
"I;iNsFpkao'nE0        var content ="调用方法:<br />构造win对象,然后将win对象作为参数实例化JWindow类。具体如源代码下面的例子。<br />其中win对象的属性如下:<br />id:窗口id,用户必须提供值,并确保是唯一的<br />title:窗口标题,默认为空<br />content:窗体内显示的内容,可以是任何浏览器认得的东西,默认为空<br /> icon:窗口图标,如果用户没有提供值,类会提供个默认值<br />top:窗口左上角距离浏览器上边框距离,默认居中<br />left:窗口左上角距离浏览器左边框距离,默认居中<br />width:窗口宽,默认为420<br />height:窗口关,默认为360<br />minButton:(布尔值)是否显示最小化按钮,默认显示<br />maxButton:(布尔值)是否显示最大化按钮,默认显示<br />closeButton:(布尔值)是否显示关闭按钮,默认显示";无忧脚本g*Mp|2o
        var win1={
V ]6D)w]#[/j*uo0                title:"测试",无忧脚本5L/l yXpw)vF
                id:"1",无忧脚本#M-U K/H z
                content:content无忧脚本 L|eh-e"c'z*Lm$l
        };
7]z9|%Fjw0        var win2={无忧脚本awEcos ~r M_
                id:"2",无忧脚本w+]V@;bAL r[y/J)J
                content:content,无忧脚本8JA{ia FbE5t
                maxButton:false
ES ]4xV7g _b0        };无忧脚本ZQa!RFOa'^
        var win3=new Object();
8@/h7jrd'D0                win3.title="测试";无忧脚本 pKg ?w"xE/QT*a
                win3.id="3";                win3.content=content;
#m'P+v$JN"H0                win3.icon="http://www.51js.com/attachments/2007/03/35270_200703102258421.gif";
K0xu | m"p0        new JWindow(win1);无忧脚本HB&_1l K)H
        new JWindow(win2);无忧脚本|cryu5~pK?
        new JWindow(win3);无忧脚本O1dP&AUUt
</scrīpt>无忧脚本*e-KLZ@]Ov/Z"U
<!--information-->无忧脚本])w2x6V7g cH
<div style="position:absolute; bottom:30px; right:5px; word-break:break-all;font-size:12px;color:#CCC;">无忧脚本im/T` f} c
兼容浏览器:IE5.5+、FireFox1.5+<br />推荐浏览器:IE6.0、FireFox2.0<br /> design by brull. All right reserved ©2007 <br />Email:brull@163.com无忧脚本 W"|*l6tUF(N
</div>无忧脚本X#C7H&Ea"DC
</body>无忧脚本 k-DU#D {
</html>
[本帖最后由 brull 于 2007-3-11 00:16 编辑]

TAG: javascript 模拟窗口 JWindow

无心竹院 竹无心 发布于2007-03-10 23:49:58
不错的东西。支持一下先
qifuren1985发布于2007-03-11 01:05:08
最好支持一下像QQ的自动隐藏
manng发布于2007-03-11 07:04:00
非常精彩
岁月有痕 dron 发布于2007-03-11 14:05:08
我也来一个~~~www.51js.com&BPI:LG:K9B]^jK
www.51js.com!iQ|ZD&V
不过最小化还没做无忧脚本tX5qIZan9MT:g_
www.51js.comyp7pV4R+NX
http://ucren.com/vjbox/description/example/webUI_Window.html
Brull与无忧同在 brull 发布于2007-03-11 14:11:01

QUOTE:

原帖由 qifuren1985 于 2007-3-11 01:05 发表www.51js.com7b        F4HK&@
最好支持一下像QQ的自动隐藏
#r        GSZ!DU-//体验编写HTML代码的乐趣 - 51JS.COM下一版本计划支持,同时支持调整大小
Fz"CV[;m8W)o-//体验编写HTML代码的乐趣 - 51JS.COM谢谢关注
Brull与无忧同在 brull 发布于2007-03-11 14:12:50

QUOTE:

原帖由 dron 于 2007-3-11 14:05 发表无忧脚本,无忧,脚本,JavaScript,JS,HTML,DHTML,CSS,XML,XSLp-a:m+b({M5A7R!U
我也来一个~~~

Eq5Y1|F}1vwww.51js.com
无忧脚本q5Xy5e        Xql'B&W2J
不过最小化还没做
:C0Ww,}K
mG无忧脚本

6M9l)xr8Rwww.51js.comhttp://ucren.com/vjbox/description/example/webUI_Window.html

h4WJ"g%y
p-//体验编写HTML代码的乐趣 - 51JS.COM
在这里对你说声谢谢,JWindow的编写参考了你的部分代码
dimscar发布于2007-03-14 16:26:23
51JS的东西真多啊?支持支持!
manng发布于2007-03-14 22:17:01
不要一打开就3个视窗 , 用呼叫 , 就是先隐藏然后点连接把它呼叫出来 ! 如果一开就显示视窗 , 这样的例子很多 , 相信楼主见过不少 . . . 呵呵
xinge的个人空间 xinge 发布于2007-03-15 09:45:28
如果想一打开不显示的话,可以用onclick或onchange等来触发new JWindow(win1);无忧脚本,无忧,脚本,JavaScript,JS,HTML,DHTML,CSS,XML,XSL&b3]8Q6Lu'Y e.N

gHM0@ [
p"KZ-//体验编写HTML代码的乐趣 - 51JS.COM
好东西,支持楼主。
Brull与无忧同在 brull 发布于2007-03-15 14:03:34

QUOTE:

原帖由 manng 于 2007-3-14 22:17 发表 无忧脚本,无忧,脚本,JavaScript,JS,HTML,DHTML,CSS,XML,XSLu*@LO%y
不要一打开就3个视窗 , 用呼叫 , 就是先隐藏然后点连接把它呼叫出来 ! 如果一开就显示视窗 , 这样的例子很多 , 相信楼主见过不少 . . . 呵呵
z-b(Zv[$V"~www.51js.com好冷。。。无忧脚本&__ Jiy/h*zI
我那个是例子好不好?为了让别人知道怎么建立JWindow实例
jecelyin发布于2007-03-16 08:26:01
好东西,收下了
我来说两句

(可选)