关于作者

仿真windows窗口类Jwindow

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

查看( 2044 ) / 评论( 11 )
正考虑做一个web聊天的东东,打算用它做客户端容器
!Jg}&vx4S~+e0部分代码参考DronFw里的代码,大家批批
m W V3^*]+OL(m0只能应用在XHTML下,没有考虑HTML4.0的兼容性,感兴趣的只要稍作修改就能用在HTML4.0下
Q8Y9`Y#\UT f0转载的朋友请保留作者信息

CODE:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">无忧脚本2e^Abe f7g$exq/j4D-S!V
<html xmlns="http://www.w3.org/1999/xhtml">无忧脚本4|9M[yj$W_"i
<head>
L,yX8f1F g,u,E0<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />无忧脚本9I}"r U9fs
<meta name="author" content="brull@163.com,brull">无忧脚本/\u(XY1P.@Mi j*N
<scrīpt type="text/javascrīpt">无忧脚本n%zT0_x6}'S|f+xp6}
/**无忧脚本 md9u5x'u$I i
*JWindow,Jchat窗口类
$AeWD6k4o0*version 1.0无忧脚本(\ P7eD.`-p;H"i
*@author brull
zv hv8c0*@email brull@163.com无忧脚本HT9~bo_Kb8r6O
*@date 2007-01-31无忧脚本*c Q f {%P(|w*dX
*/
)R@ o]~C8s6i2B0无忧脚本@O dT'V9|x
/*无忧脚本 o3[z j+^-g
*新建一个窗口视图,并显示在浏览器容器里
XPv J/J%x0*类里有实例方法,min、changeStatus、close、drag
Z.y7{:x2APu)}0*/无忧脚本7w] v+eP(NH(N$p5x F
JWindow = function (win_obj)无忧脚本at6H1s lh
{无忧脚本 _ A9{*PdM
        /*
nnkc2{$F8}n0        窗口存在判断无忧脚本7jg7[.q%uXzVb-q
        如果窗口存在则只是显示它,并将它置为当前窗口无忧脚本N C/W5K'?^y
        */
*e+Qy_5z/~U-I0        if(document.getElementById(win_obj.id)){//窗口已存在无忧脚本 Ap7N [~(Wh|
                var existWin = document.getElementById(win_obj.id).quote;//存在窗口的引用无忧脚本v)x0MB|
                if (JWindow.curWindow != win_obj.id){//窗口不是当前窗口
4h o t[6n J,N0                        if (existWin.contain.style.display == "none"){//窗口是隐藏的(MIN,CLOSE),窗口隐藏时标题活动样式不变无忧脚本"\ }V,G5Qsi
                                existWin.status = existWin.oldStatus;//还原原来状态无忧脚本gL;C RAp6C"ZOf'j"[
                                existWin.contain.style.display = "";//显示窗口无忧脚本 ])k"X'okV
                                JWindow.curWindow = win_obj.id;//设置为当前窗口无忧脚本+n@b,k P:J
                                me.previous = JWindow.curWindow;
(~bSE9MF?0                        }
9gHV m%a)Q*h0                        else {无忧脚本}%AFAS
                                document.getElementById(JWindow.curWindow + "_caption").className = "win_caption_deactive";//设置当前窗口为非活动窗口样式无忧脚本^?-zR'q Qv"K
                                document.getElementById(JWindow.curWindow + "_task").className = "task_button_deactive";//设置任务栏按钮为非活动按钮样式
0Lhek ws)Z0~ s0                                JWindow.curWindow = win_obj.id;//设置为当前窗口
1e XV7c]U0                                document.getElementById(win_obj.id + "_caption").className = "win_caption_active";//设置窗口为活动窗口样式
$qu$YON9C.p0                                document.getElementById(win_obj.id + "_task").className = "task_button_active";//设置任务栏按钮为活动按钮样式
]l)c^6L0                        }
0R }eB;z1ps6rb0                        existWin.contain.zIndex = JWindow.zIndex++;//窗口上移到层最顶端无忧脚本!L7jAU:c3N:xa
                }无忧脚本{@%R3{2E'w
                return;
.k:CJ,[{2CR9S-b{3j0        }
(HG+_eG*QVT n+i0无忧脚本wx/X5}5kvaK
        /**********创建窗口******************/无忧脚本%F&KD-hu1I [X*h
        var win = win_obj;//包含窗口属性的原生对象
$zw9r n)H*LoZ0        var isIe = /msie/i.test(navigator.userAgent);//是否是IE浏览器无忧脚本U#R'f9](X&t1h
        this.contain = document.createElement("div");//窗口容器无忧脚本.J(@h(c bX,_0v*i
        this.id= win.id;//win_obj没有默认值,初始化时win_obj必须有id属性无忧脚本(U]+Cw*}\iSe/JS;T
        this.width = win.width?win.width:420;//窗口宽,默认为420
_S HP_R Q#f\0        this.height = win.height?win.height:360;//窗口关,默认为360
h3?zU(m!eaC-a0        this.left = win.left?win.left:(document.documentElement.clientWidth-this.width)/2;//窗口左上角距离浏览器左边框距离,默认居中无忧脚本l,[&}$v1W2Xz
        this.top = win.top?win.top:(document.documentElement.clientHeight-this.height)/2;//窗口左上角距离浏览器上边框距离,默认居中
/\\s J{Z0        this.oldLeft = this.left;//记录窗口最大化时窗口左上角距离浏览器左边框距离
7N#Q$C$b v0        this.oldTop = this.top;//记录窗口最大化时窗口左上角距离浏览器顶边框距离无忧脚本#ue*Ac^
        this.title = win.title?win.title:" ";//标题,默认为空无忧脚本I]H,l`Y t
        this.content = win.content ? win.content : "";//窗口内容,默认为空
'w3r zO \ E`0        this.icon = win.icon ? win.icon : "http://www.51js.com/attachments/2007/03/35270_200703102258421.gif";//窗口图标
DxK |_0        this.minButton = (win.minButton == false) ? false:true;//是否显示最小化按钮,默认显示无忧脚本 ipoV |$S;y \'M"Om
        this.maxButton = (win.maxButton == false) ? false:true;//是否显示最大化按钮,默认显示无忧脚本B4a:Y*cyGZ)u#u h*_?
        this.closeButton = (win.closeButton==false) ? false:true;//是否显示关闭按钮,默认显示无忧脚本]`(}o}
        this.status = "NORMAL";//窗口状态,包括MAX,MIN,NORMAL,CLOSE
a Ck$UA+^ mrxor"R0        this.previous = JWindow.curWindow ? JWindow.curWindow : null;//上个当前窗口,在窗口关闭和最小化时有用
#sE[$[@3_3]0        win = null;//释放对象
J4V1G E@0        var me = this;//对象引用,方便类内部引用
v#yi nz6i,i&y0
-\j] ~1C]X)[0        /*************生成窗口视图******************/
I6B"dV#KE;l#v0        me.contain.id = this.id;无忧脚本5tpiR8e YM6w"D
        me.contain.quote = this;//对象引用,方便应用页面引用
$E+Y(q b[0w w[ c%M.~*? |0        me.contain.className="win_contain";
*A bv!j$eh y0        with(me.contain.style){
Q/@"P i@8C"j0                position = "absolute";
^nu,e4op(??0                left = this.left + "px";
*aUG4U d(q`-~G_0                top = this.top + "px";
|;x8?7k E0                width =this.width + "px";
(qn3|zEG:L8|0                height =this.height + "px";
hP mJ(uJctrqu0                zIndex = JWindow.zIndex++;无忧脚本)Q{/G+kc-AH
        }
;u/R u'D5p&jo'MIB0        me.contain.innerHTML = "\无忧脚本&A7qp(P'@Z_
                <div class=\"win_caption_active\" id=\"" + this.id + "_caption\"" + " ōndblclick=\"document.getElementById('" + this.id + "').quote.changeStatus('" + this.id + "')\">\无忧脚本 B.D2T%WEMQ
                        <img src=\"" + this.icon + "\" class=\"win_icon\" /><span class=\"win_title\">" + this.title + "</span>\无忧脚本4Pi)_M;A"rb
                        <div class=\"win_button_div\">"无忧脚本$X%kQt8X-ht
                                +(this.minButton ? "<input class=\"win_min\" type=\"button\" title=\"最小化\" ōnclick=\"document.getElementById('" + this.id + "').quote.min();\" />":"")无忧脚本2L4x,Q'Nb-|%h9|L
                                +(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();\" />":"")
H p1Ohy0                                +(this.closeButton ? "<input class=\"win_close\" type=\"button\" title=\"关闭\" ōnclick=\"document.getElementById(\'" + this.id + "\').quote.close();\"/>":"")
wp$v Tp0                        + "</div>\
;r"yZ*}3kTs&t0                </div>\
A w2Gj;~2uc i5CI0                <div class=\"win_body\" id=\"" + this.id + "_body" + "\">" + this.content + "</div>\无忧脚本[$C-v-_:s0nv
                ";
uT2z$B#^-EGN_;{+J0无忧脚本6xD2Jnl:{_
        /***************注册窗口事件************************/无忧脚本*~[}j)]3[LV?[1g
        me.contain.onmousedown = function (e)无忧脚本%f%afRw7w
        {
xu[h,x0                e = e || window.event;
!]&y"K H0gaC:j*E0                var srcElement = isIe ? e.srcElement : e.target;
I7@K|3K;k2Xj0                if(JWindow.curWindow != me.id){
*l0cG;`yCxE al)qd0                        me.contain.style.zIndex = JWindow.zIndex++;无忧脚本}*T!}bL(D/U'c X
                        document.getElementById(JWindow.curWindow + "_caption").className = "win_caption_deactive";无忧脚本Yk`-BJ;m
                        document.getElementById(JWindow.curWindow + "_task").className = "task_button_deactive";
jb,x2s&l0                        me.previous = JWindow.curWindow;
/F3O| I;KTEQ0                        JWindow.curWindow = me.id;//设置为当前窗口
5yv:lN+k9h&_l_0                        document.getElementById(JWindow.curWindow + "_caption").className = "win_caption_active";无忧脚本{aV}#K:W"g
                        document.getElementById(JWindow.curWindow + "_task").className = "task_button_active";
tDM$Lwb0                }无忧脚本aA [J+le*@
                if (me.id + "_caption" ==srcElement.id && me.status == "NORMAL") me.drag(e);
1tZ._YPynB/Q0        }
VO6sl%`X0
\yHj9?P'?.K0        /***********添加任务栏按钮**********/无忧脚本 T*C mm2sl
        var task = document.createElement("button");
@bF }-uy7M0        task.id = me.id + "_task";
?(T-b yg b]:I0        task.title = me.title;无忧脚本*~2btO;c2g0k
        task.className = "task_button_active";无忧脚本#F+t,D ` sF;B
        task.innerHTML = "<img src=\"" + me.icon + "\" class=\"task_icon\" /><span class=\"task_font\">" + me.title + "</span>";
E#G5@(c5h0        task.onclick = function () {无忧脚本Am/A"Y {#I7Q2a
                   task.blur();//丢掉讨厌的虚线框无忧脚本.e4rs8O1f%aI
                if(JWindow.curWindow != me.id){
"Ir/?A4z;m0                        me.contain.style.zIndex = JWindow.zIndex++;无忧脚本4RW\6z \%f
                        document.getElementById(JWindow.curWindow + "_caption").className = "win_caption_deactive";无忧脚本0G,tj Gx2@
                        document.getElementById(JWindow.curWindow + "_task").className = "task_button_deactive";
h-dl k7F/`0                        me.previous = JWindow.curWindow;
ZV;j.P/z0                        JWindow.curWindow = me.id;//设置为当前窗口无忧脚本 W0}|(_}
                        document.getElementById(JWindow.curWindow + "_caption").className = "win_caption_active";无忧脚本 |S*jR8B.M
                        document.getElementById(JWindow.curWindow + "_task").className = "task_button_active";无忧脚本!qG$Z[ }6e V4Dw
                        if(me.status == "MIN"){
4N3U Jj3S/}4`2cAelD0                                me.status = me.oldStatus;//还原原来状态
;L%U Ua/E#sD0                                //document.getElementById(me.id + "_task").className = "task_button_active";
;O}[;MA&F)Va)X.\;w0                                me.contain.style.display = "";//显示窗口无忧脚本j&x(V!nFn wY:r9ch
                        }无忧脚本` O*KF}.fE{H
                }
)`'b{Jb1i0                else if(me.status == "MAX" || me.status == "NORMAL") me.min();
FW!Cq9[Q0                else if(me.status == "MIN") {
#iY#E kw5\ |Q4c0                        me.status = me.oldStatus;//还原原来状态无忧脚本wDy'`'vjD%S
                        document.getElementById(me.id + "_task").className = "task_button_active";
&EI0jH)D#{0                        me.contain.style.display = "";//显示窗口
Zd5o x2FH5ok C0                }无忧脚本J4e~Ef~`
        }
gV(d*^%H2j0        if(! document.getElementById("task")) JWindow.createTask();无忧脚本1D-L;[` j1f_:M;C
        document.getElementById("task").appendChild(task);
tJ"Tu ~4{'n5O*?x0        document.body.appendChild(me.contain);//将窗口放入浏览器容器无忧脚本W2RUU;b
        if (document.getElementById(JWindow.curWindow) != null){ //当前窗口不为空无忧脚本5J4| f#s0@6n6X7?]M
                document.getElementById(JWindow.curWindow + "_caption").className = "win_caption_deactive";//设置当前窗口为不活动状态
8d$T8B k~p }pMn0M4}0                document.getElementById(JWindow.curWindow + "_task").className = "task_button_deactive";无忧脚本IW5r3L-Yq5uU
        }无忧脚本.@:xvZaW'`$t
        /***********设置为当前窗口*************/
reTC\ @"x q }_0        JWindow.curWindow = me.id;无忧脚本K?&m!ZJP)f

N{cG4{"j0        /***********对象方法*************/无忧脚本v!SIF7fO7Ne
        this.drag = function (e)
F"|#e!@F1Jh8Y&})s0        {无忧脚本 [a `m9H(uP
                var w = me.contain;无忧脚本#N_qDZ
                var relLeft = e.clientX-parseInt(w.style.left);
3rly pw]$P0                var relTop = e.clientY-parseInt(w.style.top);
7siG3Y9m3b0                //每次拖动都注册事件,然后再注销
SZ1r#qbG ]0                document.onmousemove = function (e)无忧脚本 j5\/xno\(D#D
                {
/eB+e)|nYm0                        e = e || event;
I)]'a6`Y+G0                        if(w !=null){无忧脚本!K3F7j}(w;[Z
                                w.style.left = (e.clientX-relLeft) + "px";
i'lvUf1K1pI0                                w.style.top =  (e.clientY-relTop) + "px";
1mFuO*W@0                        }
u!@0P1DKk0Y7Y0                }
zKD~)D q#M.er0无忧脚本 QCU3b:O
                document.onselectstart = function ()无忧脚本 M,swgb
                {无忧脚本0Q0x-I@n^
                        return false;无忧脚本z-EV X2V] ]{U U
                }
-? F a+ui0                document.onmouseup = function ()无忧脚本_ QBREYm
                {无忧脚本K$f#Ik+mxg*\
                        w = null;//释放拖动对象无忧脚本,K g l^2v+iu#[
                        document.onmouseup = document.onmousemove = document.onselectstart = null;//注销注册事件,包括该事件本身
9O'zG!t%}|Y:V:r0                }
VXfH_~ OZ0        }
"j5XIYT+Z2UR%Db0this.min = function ()
#G7Y@*mp#h0        {无忧脚本!\.eW$n-Y)Wy u)L!H
                if(JWindow.curWindow == me.id && this.minButton){
q+MQ:`b#Nz%i}+y0                        me.contain.style.display = "none";//只是隐藏而已^_^无忧脚本6ku0[l/w1J
                        me.oldStatus = me.status;//保存最小化前的状态无忧脚本$Q#KW ]/sU [
                        document.getElementById(JWindow.curWindow + "_task").className = "task_button_deactive";
E q7I&{&\3c0                        me.status = "MIN";无忧脚本'M(m[q E$A|mdx
                        if(me.previous && document.getElementById(me.previous).quote.contain.style.display != "none"){
eHsW)L@n0                                JWindow.curWindow = me.previous;//设置为当前窗口无忧脚本B@G1AC6|Hn
                                document.getElementById(JWindow.curWindow + "_caption").className = "win_caption_active";无忧脚本o5W5O9p9Q M/f
                                document.getElementById(JWindow.curWindow + "_task").className = "task_button_active";
"M HUk*J V!]0                        }无忧脚本Cz+T{5^P
                }无忧脚本SB#h)j]
        }无忧脚本(A4`oZoQ7l8]M
无忧脚本;u.sjTo;e$w!s@(g
        this.changeStatus = function ()
\:a gV3T h0        {无忧脚本E|lFzw!J S
                if (me.status == "MIN"||me.status == "CLOSE") return ;无忧脚本9N_ v9dS5I:mL w`f
                if (me.status == "MAX" && this.maxButton)无忧脚本 qp6@)PP+Ih~F6a;k
                {无忧脚本 J K nx W5[d
                        with(me.contain.style){
DS/h9e1PQb0                                left = me.oldLeft + "px";无忧脚本*o&O7aWQuRp
                                top = me.oldTop + "px";无忧脚本,{!UuBoE
                                width = me.width + "px";无忧脚本9k*ZslM+o
                                height = me.height + "px";
ws,HE6e?C0                        }
[;G-Q'T"V2U0                        document.getElementById(me.id + "_maxbutton").className="win_max";无忧脚本0zm K#M!Nd
                        me.status = "NORMAL";
'S6Y;M]U PF.czz-Bp0                }无忧脚本 NA7E @E"R }c
                else if(me.status =="NORMAL" && this.maxButton)
o ge(S;Z0G0                {无忧脚本xrB;{m
                        //记录窗口位置,方便窗口还原大小时定位无忧脚本N8U^1h,@
                        me.oldLeft = parseInt(me.contain.style.left);
&~;w$y oJ:?9A+b0                        me.oldTop = parseInt(me.contain.style.top);
o5H.g a9|@0                        with(me.contain.style){
O0_6y|(z&N?K0                                left = 0;无忧脚本A4y I3a9_%qR
                                top = 0;
'GA[2xR%E^e&V0                                width = document.documentElement.clientWidth + "px";//only for XHTML无忧脚本5rYSqNF0gcL
                                height = (document.documentElement.clientHeight-document.getElementById("task").offsetHeight) + "px";//only for XHTML无忧脚本6~p0_5QC9j6Zp+]
                        }无忧脚本4mE ]ad9o5k
                        document.getElementById(me.id + "_maxbutton").className="win_res";
Yyt!Z,T0                        me.status = "MAX";无忧脚本!Kn2jK.q.D
                }无忧脚本 ST)A}+eh[&n t
        }
uqj6]8F#m%xZ!G6}lZg0        //窗口关闭无忧脚本6l)D~8_ CW#FUP(v+s
        this.close = function ()
WNA dk f `!k0        {
!IFD1{3W2~WK q0                if(JWindow.curWindow == me.id && this.closeButton){
G.aDC"CIU~d0                        document.getElementById(JWindow.curWindow + "_task").style.display = "none";
?}u+CS1B7jI0                        me.contain.style.display = "none";//只是隐藏而已^_^无忧脚本8U b6nqe&MX3U,|
                        me.oldStatus = me.status;//保存关闭前的状态无忧脚本2A+LT9FhVN
                        me.status = "CLOSE";
V:Qh9jpV Tl'H4e0                        if(me.previous && document.getElementById(me.previous).quote.contain.style.display != "none"){无忧脚本x-A fkN{
                                JWindow.curWindow = me.previous;//设置为当前窗口
4a:B%{:b|Gb$}:G0                                document.getElementById(JWindow.curWindow + "_caption").className = "win_caption_active";无忧脚本2Dm Vzm]:N W;s&g
                                document.getElementById(JWindow.curWindow + "_task").className = "task_button_active";
P%Y,y+PiC%u0                        }
w ikLH0                }无忧脚本sWs }-l
        }
1i `4@!JJ+w K0}无忧脚本_Z r[0EJk&C
/***************静态属性和方法***********/无忧脚本 ~3B!w3z$}c hhA
//静态属性
XP)u2f)rFut[0JWindow.zIndex = 100;//初始zIndex,任务栏的zIndex为30000,每点击一次窗口窗口zIndex自增1,也就是用户最多可以点击窗口29900次,应该已经足够
s1f1U c8AE0JWindow.curWindow = null;//当前活动窗口
$p2e\*s)U;f`0/*********静态方法**********/无忧脚本9s'PVz:z)x p }Up:j
//创建任务栏
/n n2O*I)_Y0JWindow.createTask = function() {
2K t0y?%L;a"\1f'^0        var task = document.createElement("div");无忧脚本Un8b*qHBY1q
        task.id = "task";
A&lSp~(eo0        with (task.style) {
6|^hl;`L'MI0                position = "absolute";
#\YU8KTR4lb0                height = "20px";
7C+w2Io*J0                width = document.documentElement.clientWidth + "px";
wxS-AV j&dh0                left = 0;无忧脚本5UPNY9` L5V
                bottom = 0;
+hZ'?e;odKZ0                padding = "1px";
V7{6W;w L3x6AA[.DM8jw0                border = "1px solid #EEE";
} \-Su;yG}k[#C d9^0                background = "#CCC";无忧脚本!q1g)x+hw$S;N
                zIndex = 30000;//设置一个比较大数,使其永远位于最上层
\#ZcH Q O0        }无忧脚本E9I2z1f6k
        document.body.appendChild(task);
dfcf3c2B0}
r|!i;S\x+^0
7_)bj'Zr9^0/*非本类方法,但是在这里编写可读性比较高
7]O2@5z9~|(M*n0*注册系统事件无忧脚本!c ^+Q f7zsR z
*/
l#Bz,AY?#y2|0/***********注册事件,在浏览器窗口大小调整时对任务栏的位置和宽度进行相应调整*********/无忧脚本efC+D'HnbS^
window.onresize = function () {
M'P%x$Dm0    with(document.getElementById("task").style){
4?Pm g0e8Q5Nv&|h0                width = document.documentElement.clientWidth + "px";
O3A zX3`;E I.o3W+S"q3Y0                top = (document.documentElement.clientHeight-parseInt(height)) + "px";无忧脚本h3[^ Ps3gu
        }无忧脚本'Yf1C&e!g$s
}无忧脚本 K4i-bU*ILt^!d7S!T
</scrīpt>无忧脚本_PP.s&J#c
<title>web online communication</title>无忧脚本&k+ThQ+q5Nu
<style type="text/css">无忧脚本$Cer%L:q]YNi
/*Jchat 客户端默认样式表*/
nzo)V(N H:eGf8[g0html,body无忧脚本j]U"~,S*a8uA q
{
8W EoM\0        height:100%;
p F O;vtt0        width:100%;无忧脚本4x:l*W4{bVe
        overflow:hidden;无忧脚本+ZF'I$|%ru
        border-width:0;无忧脚本l+V\ u7v4}7OB
        background-color:#336699;
ps&D1N3r{8Y0        margin:0;
4tE]!s3O"K ]0        padding:0;无忧脚本1pl R1Q3ROj2x
}
TN+l&qK[!u)T0无忧脚本 N-nO C?)QuL~
/*窗口容器*/
]? fe1a#c0.win_contain
9g:M y(j0u m&nhv6F+j:nL0{无忧脚本Z5sg` n
        border-width:2px;无忧脚本)ToU6n l"@I4c
        border-style:outset;
N;H^I$e|(S#P-a/v0        border-color:#D4D0C8 #404040 #404040 #D4D0C8;
r.y$\"d)e/FiQs0        cursor:default;无忧脚本#D#Rt/f&ZI
        background-color:#CCC;
:p pN,D~[\b*k0}
-Dc]&X^5[3h-j0
s~U,`P$z0hl0/*活动窗口标题样式*/无忧脚本W ^9\/x%S-k%[
.win_caption_active
&Q~^Q7mc0{
O+~ v0K6xs+vJ0        width:100%;
x^Dp~$M bZ0        height:18px;
2AhtPA0        font-size:14px;
l^lY CZ,Yn},VX0        background-color:#69C;
:aL N.q9ta-A-Re!q0        filter:progid:DXImageTransform.Microsoft.gradient(startColorStr=#10246B,endColorStr=#a5cbf7,GradientType=1);
,uh@#M D [7QI0}无忧脚本1gG:i&B*?
无忧脚本&|K!a:\}XJ1V
/*非活动窗口标题样式*/
NW{xee0.win_caption_deactive
v,f v kRw\@:ysv8C0{无忧脚本5k0@EgD!N {
        width:100%;
K:O8Wo%l0        height:18px;
l(LC*d QW0        background-color:#808080;无忧脚本sQ1C;a5w
        font-size:14px;无忧脚本,w#O2mK4L9}%v Z,V
        filter:progid:DXImageTransform.Microsoft.gradient(startColorStr=#848284,endcolorstr=#c6c3c6,GradientType=1);
-} _y"AV&q k0}
?s^ \J%|~q!_%`7f0
I@ [},C\P3p0/*窗口窗体样式*/无忧脚本U0{%\!\d qD/l[
.win_body无忧脚本~,Q/V#o/~!c
{无忧脚本5r0YO m7V;F!vKT
        width:99%;
/a r8t7Im&^Igi0        height:340px;无忧脚本1{rW/EYdx
        padding:2px;
~*a^X&rC0        overflow:hidden;
GN&_.y*f!URBow0}
kO@D)V*Ra4m0无忧脚本)K.TZd5E E/W8E7wD$a
/*窗口图标样式*/无忧脚本2jrRB4L _S
.win_icon无忧脚本8y-db$n:@-Y)m
{
J+@;O/DLz nl0        padding:1px;无忧脚本Y-StJ.QW9S^W
        vertical-align:text-bottom;无忧脚本(o4SM-\)e Cb3q/H8M
}无忧脚本wg1_ S ^%O\!q }

w%\y8Tl2v[8T0/*窗口标题样式*/无忧脚本5]ej {4p o]
.win_title无忧脚本 r WMkgdhE"d
{
,{/mm rG a*o3Gy0        color:#FFF;无忧脚本ue4F0dM R
        /*font-size:14px;*/
q0z4sE_ql0        font-weight:bold;
)b'S\ k:L?}v~ ~ EV0}无忧脚本${3yOB)g(~6o
无忧脚本7j!f0o{a cF@
/*窗口按钮层样式*/无忧脚本z1BP N;M0td
.win_button_div无忧脚本%Q(B6eWNDTb)\
{
i X4{ hTO{0        display:inline;无忧脚本V1B2L1qL6O"Q
        position:absolute;
[5n:O4]G0        right:0;
(k"Mx%zp_/BO0        padding:2px;
+v,waVw3a W0}
w8Mc$b1Vp*h0无忧脚本4H%Cp~s5}
/*窗口按钮样式*/无忧脚本ha2hc8A)D'i
.win_button_div input
)pDUH0}[F)]0{
W8CmFqSas0        width:16px;
x!G-~ EJW0        height:14px;
f n4~2xxp4Y0        background-color:#CCC;
*z8g;q#r.zP1Zx0}无忧脚本?O5c,a1iI

'y@t4s3@iD+S0/*活动任务栏按钮*/
y"FVX#dG? }*HpJ0.task_button_active
#Ib.[pC0{无忧脚本"F n#vdJf
        border:2px inset;
a1Q|Wp_ _M0        width:100px;无忧脚本.V"tHf:J r)Q
        height:20px;
oK]5JH0y Q0        text-align:left;无忧脚本[1Qn$}#W!~.?5`
        margin-left:3px;无忧脚本tTWV"q9I
        padding:0px;无忧脚本1mF"A/Y9p*l
        overflow:hidden;
/mY$`$B;S8aZr'w0        background-color:#CCC;
El:wX QZd-qr0}
F \X!az3M.|3tt7sk0无忧脚本S\+S]*|
/*非活动任务栏按钮*/
}K1r8`'}Y0}$s0.task_button_deactive无忧脚本*w8})hy e:x \6r
{
r&z5o6~[x0        width:100px;无忧脚本z?)r#H i
        height:20px;
~(~S-x,l4On n;K'F/g g0        text-align:left;无忧脚本p'Ye q,@K3B{4? h(L$a
        margin-left:3px;无忧脚本fG2b*H1m*y
        overflow:hidden;无忧脚本 ^/e*[:t0_ Y {cf
        padding:0px;
+pt&ZJ v0        background-color:#CCC;无忧脚本z4L x)R4OAt{2~[C
}
U2p E&[ F7fi V0f#Q0
b$O]9q KZ0Ix0/*任务栏按钮文字*/
\7}P;xm6S*{0.task_font
p-a8S:q+M)g0{无忧脚本{2O*B~!W_
        font-size:12px;无忧脚本6vpC,X4UN"{
}
jrww/rj#dk0无忧脚本!a?#zwF
/*任务栏按钮图标*/
-_8K*X]*t0.task_icon无忧脚本3lEw8rf4c8K
{
'ks_:g9]"\2Xu6z5\\0        vertical-align:bottom;
7W[j$c4x C}5w0}无忧脚本0q$es%@M
无忧脚本ggdt f7[I!Mb
/*聊天内容窗口*/
$g6^6crvP0.chat_frame无忧脚本oy7hWZ3|
{
$Hlks)o,W[tv O0        width:100%;
6AXQNMrQ$}0        height:240px;
3q~D#y8v!D$`h0        background-color:#FFF;
D0Vo*_A9T'Y(C0        word-break:break-all;
@7~1]^`%w"fN i0}
.h#D$Ky5SYbz [,S0.editor_frame
$Z*\9rL2lLtM+Q0{
I L nx].H p0        width:100%;无忧脚本)F&I-W A o"ri iW
        height:100px;
4{dK;n1g's0        background-color:#FFF;无忧脚本#ktw-Yr c
        word-break:break-all;
.])R._ik&Xc7d/Y0}
8e.y/RE(W R.w,}"g2ly0/*窗口最小化按钮样式*/
J6]Lsz \4{ei%`0.win_min无忧脚本8t|$p)l9Z\I
{
B/^1zmC0        background:#d4d0c8 url(http://www.51js.com/attachments/2007/03/35270_200703102256511.gif) no-repeat  center center;无忧脚本 Y*};hPB"f8f'b&n
}
6BN(Ay,V%E7B0
z }gJQ!s^)z0/*窗口还原按钮样式*/
#ST4r Y:x6u-A0.win_res
{sG2y"B"D0{无忧脚本{zcql#@1U1s2v
        background:#d4d0c8 url(http://www.51js.com/attachments/2007/03/35270_200703102257161.gif) no-repeat  center center;无忧脚本@&_0B$d.B,| zuB
}
9EV*T f]7n2V*GI0无忧脚本H/Q\2gR{N
/*窗口最大化按钮样式*/
6EPV R7q-{8GV0.win_max无忧脚本^0Oz/g+Q
{
&WY&~Iv^-]0a0        background:#d4d0c8 url(http://www.51js.com/attachments/2007/03/35270_200703102256581.gif) no-repeat center center;无忧脚本o,b8k0S|;~~
}无忧脚本-PAo;@n M

Dyo5d(jDu0/*窗口关闭按钮样式*/
2J xL#Dy$W)@#Y.X0.win_close
Ur$I0O%l4\(o@D0{
:t7J8nUDU \8Z*q0        background:#d4d0c8 url(http://www.51js.com/attachments/2007/03/35270_200703102257331.gif) no-repeat  center center;无忧脚本${3d!Z0M1p3@s F
}
;E;Q6l6[iI2Yv!N7D0</style>无忧脚本8si2v i8R'I/O4D{
</head>无忧脚本,f@5Egj
<body>无忧脚本 n/tl NWiYs
<scrīpt type="text/javascrīpt">
{2a"yd s0        /*******用户程序*********/无忧脚本tn|P&p+n8ep*M^G
        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:(布尔值)是否显示关闭按钮,默认显示";无忧脚本 fN8W"V_QL(c2d
        var win1={
3wj2h SD9m-w0                title:"测试",无忧脚本k0q-[-k`)}A
                id:"1",
Z\A&_F9vq6E}0                content:content无忧脚本9w pU c8~d%]#P {Tt
        };
S"x nhA*vh0        var win2={无忧脚本 E8^(lo%@2^(z~
                id:"2",无忧脚本8a7Y I Z U
                content:content,无忧脚本fK| i6Q:S[v Q@
                maxButton:false无忧脚本xPI;\e,P-l
        };无忧脚本K Q,i#Zgq4l F
        var win3=new Object();无忧脚本pI`6i/w\-|$g
                win3.title="测试";
)RnY2c#|Nk0                win3.id="3";                win3.content=content;无忧脚本*M(W bAt
                win3.icon="http://www.51js.com/attachments/2007/03/35270_200703102258421.gif";
9gQd K2t_/xc0        new JWindow(win1);无忧脚本FKcAI3C X/S
        new JWindow(win2);
d#GF*kl$E&zN"a-c-J0        new JWindow(win3);
p#m7j;dwX0</scrīpt>无忧脚本i9n7C#i.H
<!--information-->无忧脚本oN9[*_gt Fz$L S
<div style="position:absolute; bottom:30px; right:5px; word-break:break-all;font-size:12px;color:#CCC;">
5Dm8^8D,_0兼容浏览器:IE5.5+、FireFox1.5+<br />推荐浏览器:IE6.0、FireFox2.0<br /> design by brull. All right reserved ©2007 <br />Email:brull@163.com
8a2O_U(E*XX*Z0</div>无忧脚本'eph Zu@J
</body>无忧脚本7@#?;n!C*B~ Y
</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
我也来一个~~~
[
J{-RK5~'PYZ-//体验编写HTML代码的乐趣 - 51JS.COM

O W7Gj]fGPh#Q-//体验编写HTML代码的乐趣 - 51JS.COM不过最小化还没做
5@4_'Fa&Jvt"r-//体验编写HTML代码的乐趣 - 51JS.COM
NVqKWY%o0L无忧脚本-//体验编写HTML代码的乐趣 - 51JS.COMhttp://ucren.com/vjbox/description/example/webUI_Window.html
Brull与无忧同在 brull 发布于2007-03-11 14:11:01

QUOTE:

原帖由 qifuren1985 于 2007-3-11 01:05 发表PO7m
I        x
H

最好支持一下像QQ的自动隐藏
-//体验编写HTML代码的乐趣 - 51JS.COMDn.hx#VL)`+P
m        {5q

下一版本计划支持,同时支持调整大小
`~J7n3Z+J d-//体验编写HTML代码的乐趣 - 51JS.COM谢谢关注
Brull与无忧同在 brull 发布于2007-03-11 14:12:50

QUOTE:

原帖由 dron 于 2007-3-11 14:05 发表无忧脚本!I(_r        h        M1xNv        mr1_
我也来一个~~~c*cf6{;hW


eIaf(DB3N-//体验编写HTML代码的乐趣 - 51JS.COM
不过最小化还没做
g0RUP-n)w无忧脚本-//体验编写HTML代码的乐趣 - 51JS.COM无忧脚本fo3lk.{0M
http://ucren.com/vjbox/description/example/webUI_Window.html
-//体验编写HTML代码的乐趣 - 51JS.COM~5|^&\&g'Xk
Q:O3]

在这里对你说声谢谢,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);
js
opTn2T
2vHi`db'C|#|
好东西,支持楼主。
Brull与无忧同在 brull 发布于2007-03-15 14:03:34

QUOTE:

原帖由 manng 于 2007-3-14 22:17 发表 无忧脚本-//体验编写HTML代码的乐趣 - 51JS.COM-]htX1Z/iN5c
不要一打开就3个视窗 , 用呼叫 , 就是先隐藏然后点连接把它呼叫出来 ! 如果一开就显示视窗 , 这样的例子很多 , 相信楼主见过不少 . . . 呵呵
无忧脚本-T4XJ5VNfr `
好冷。。。www.51js.com#Ju$T@c
我那个是例子好不好?为了让别人知道怎么建立JWindow实例
jecelyin发布于2007-03-16 08:26:01
好东西,收下了
我来说两句

(可选)