⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 19-1.js

📁 JAVASCRIPT完全自学手册,中源码的验证修订实例
💻 JS
📖 第 1 页 / 共 2 页
字号:
//**载入CSS*****
var xWinCssFilePath="..\/inc\/css\/19-1.css";
document.write("<style>@import url("+xWinCssFilePath+");</style>");

//**检测浏览器种类*****
var BROWSERNAME="";
switch(navigator.appName.toLowerCase()){
    case "netscape":
        BROWSERNAME="ns";
    break;
    case "microsoft internet explorer":
    default:
        BROWSERNAME="ie";
    break;
}

//**设置初始化事件******
switch(BROWSERNAME){
    case "ns":
        window.addEventListener("load",_xWin_init,false);
    break;
    case "ie":
    default:
        window.attachEvent("onload",_xWin_init);
}

//**设置全局定时器******
if(typeof(__xSeriaTimer__)=="undefined"){
    var __xSeriaTimer__={    // ver 1.2 by Hutia, 04/03/06
        events:new Array(),
        objs:new Array(),
        intervals:new Array(),
        handle:null,
        times:0,
        _interval:20,
        exec:function(){
            __xSeriaTimer__.times++;
            for(var i=0;i<__xSeriaTimer__.events.length;i++){
                try{
                    if(__xSeriaTimer__.times % __xSeriaTimer__.intervals[i] == 0){
                        with(__xSeriaTimer__.objs[i]){
                            eval(__xSeriaTimer__.events[i]);
                        }
                    }
                }catch(e){}
            }
        },
        pop:function(i){
            __xSeriaTimer__.events[i]=null;
            __xSeriaTimer__.objs[i]=null;
        },
        push:function(strV,obj,interval){
            interval=parseInt(interval);
            interval=(isNaN(interval)||interval<1)?1:interval;
            interval=parseInt(interval/__xSeriaTimer__._interval);
            interval=(interval<1)?1:interval;
            for(var i=0;i<__xSeriaTimer__.events.length;i++){
                if(__xSeriaTimer__.events[i]==null){
                    __xSeriaTimer__.events[i]=strV;
                    __xSeriaTimer__.objs[i]=obj;
                    __xSeriaTimer__.intervals[i]=interval;
                    return(i);
                }
            }
            __xSeriaTimer__.events[i]=strV;
            __xSeriaTimer__.objs[i]=obj;
            __xSeriaTimer__.intervals[i]=interval;
            return(i);
        },
        start:function(){
            __xSeriaTimer__.stop();
            __xSeriaTimer__.handle=setInterval(__xSeriaTimer__.exec,__xSeriaTimer__._interval);
        },
        stop:function(){
            clearInterval(__xSeriaTimer__.handle);
        }
    };
    __xSeriaTimer__.start();
}

//**初始化函数******
function _xWin_init(){
    var allTheWindows=document.getElementsByTagName("div");
    for(var i=0;i<allTheWindows.length;i++){
        if(allTheWindows[i].className.match(/^((xWin)|(.+ +xWin)|(xWin +.+)|(.+ +xWin +.+))$/))_xWin_event_doInit(allTheWindows[i]);
    }
}


//**事件响应函数区******

function _xWin_event_doInit(element){
    //初始化变量
    element.ownerDocument.index=isNaN(element.ownerDocument.index)?10000:parseInt(element.ownerDocument.index)+1;
    element.x0=0;element.y0=0;
    element.x1=0;element.y1=0;
    element.w0=0;element.h0=0;
    element.offx=6;element.offy=6;
    element.minW=90;element.minH=(BROWSERNAME=="ns"?20:20);
    element.moveable=false;
    element.resizable=false;
    element.hover='orange';element.normal='#336699';
    element.minButton=BROWSERNAME=="ie"?"0":"_";
    element.maxButton=BROWSERNAME=="ie"?"1":"=";
    element.normalButton=BROWSERNAME=="ie"?"2":"+";
    element.closeButton=BROWSERNAME=="ie"?"r":"X";
    element._title="Untitled Window";
    element._body="";
    element._winRect={l:0,t:0,w:0,h:0};
    element._restoredWinRect={l:0,t:0,w:0,h:0};
    element._windowState="normal";
    element.settingNode=getElementByClassName(element,"xWinSetting");
    if(!element.settingNode){
        element.settingNode=document.createElement("div");
        element.settingNode.className="xWinSetting";
        element.settingNode.xwin=element;
        element.appendChild(element.settingNode);
    }
    element.xwin=element;
    
    //设置方法
    element.Close=_xWin_method_Close;
    element.Destroy=_xWin_method_Destroy;
    element.GetSetting=_xWin_method_GetSetting;
    element.Max=_xWin_method_Max;
    element.Min=_xWin_method_Min;
    element.MoveTo=_xWin_method_MoveTo;
    element.ResizeTo=_xWin_method_ResizeTo;
    element.SetContent=_xWin_method_SetContent;
    element.SetTitle=_xWin_method_SetTitle;
    element.ShowHide=_xWin_method_ShowHide;
    
    //设置事件
    element.onmousedown=_xWin_event_doMDown;
    element.onmouseup=element.onlosecapture=_xWin_event_doMUp;
    element.onmousemove=_xWin_event_doMMove;
    element.onclick=_xWin_event_doClick;
    element.onselectstart=element.onselect=_xWin_event_doSelect;
    
    //记录显示风格
    var tempDisplay=element.style.display;
    //改变显示风格
    element.style.display="block";
    //设置窗口变量
    var w=parseInt(element.GetSetting("width"));
    w=isNaN(w)?(element.offsetWidth+10):parseInt(w);
    w=w<element.minW?element.minW:w;
    var h=parseInt(element.GetSetting("height"));
    h=isNaN(h)?(element.offsetHeight+30):parseInt(h);
    h=h<element.minH?element.minH:h;
    var l=parseInt(element.GetSetting("left"));
    l=isNaN(l)?element.offsetLeft:parseInt(l);
    l=l<1?1:l;
    var t=parseInt(element.GetSetting("top"));
    t=isNaN(t)?element.offsetTop:parseInt(t);
    t=t<1?1:t;
    var z=element.ownerDocument.index;
    var title=new String(element.GetSetting("title"));
    
    //设置窗口标题
    element.oTitle=element.ownerDocument.createElement("div");
    element.oTitle.xwin=element;
    element.oTitle.className="xTitle";
    element.appendChild(element.oTitle);
    
    //设置窗口标题内容
    element.oTitleContent=element.ownerDocument.createElement("span");
    element.oTitleContent.xwin=element;
    element.oTitleContent.className="xWinTitleContent";
    element.oTitle.appendChild(element.oTitleContent);
    element.oTitleContent.ondblclick=function(){this.xwin.Max();};
    element.SetTitle(title);
    
    //设置窗口标题关闭按钮
    element.oTitleCButton=element.ownerDocument.createElement("input");
    element.oTitleCButton.xwin=element;
    element.oTitleCButton.type="button";
    element.oTitleCButton.className="xWinTitleCloseButton";
    element.oTitle.appendChild(element.oTitleCButton);
    element.oTitleCButton.onclick=function(){this.xwin.ShowHide("none");};
    element.oTitleCButton.value=element.closeButton;
    
    //设置窗口标题最大化按钮
    element.oTitleMaButton=element.ownerDocument.createElement("input");
    element.oTitleMaButton.xwin=element;
    element.oTitleMaButton.type="button";
    element.oTitleMaButton.className="xWinTitleMaxButton";
    element.oTitle.appendChild(element.oTitleMaButton);
    element.oTitleMaButton.onclick=function(){this.xwin.Max();};
    element.oTitleMaButton.value=element.maxButton;
    
    //设置窗口标题最小化按钮
    element.oTitleMButton=element.ownerDocument.createElement("input");
    element.oTitleMButton.xwin=element;
    element.oTitleMButton.type="button";
    element.oTitleMButton.className="xWinTitleMinButton";
    element.oTitle.appendChild(element.oTitleMButton);
    element.oTitleMButton.onclick=function(){this.xwin.Min();};
    element.oTitleMButton.value=element.minButton;
    
    //设置窗口内容
    element.oContent=element.ownerDocument.createElement("div");
    element.oContent.xwin=element;
    element.oContent.className="xWinBody";
    element.appendChild(element.oContent);
    oC=element.firstChild;
    while(oC){
        tC=oC.nextSibling;
        if(oC!=element.oTitle&&oC!=element.oContent){            
            element.oContent.appendChild(oC);
        }
        oC=tC;
    }
    
    //设置窗口阴影
    element.oShadow=element.ownerDocument.createElement("div");
    element.oShadow.xwin=element;
    element.oShadow.className="xShadow";
    element.parentNode.insertBefore(element.oShadow,element.nextSibling);
    element.oShadow.style.zIndex=z-1;
    
    element.MoveTo(l,t);
    element.ResizeTo(w,h);
    
    //恢复显示风格
    element.style.display=tempDisplay;
    //设置窗口样式
    with(element.style){
        zIndex=z;
        backgroundColor=element.normal;
        color=element.normal;
    }
}

function _xWin_event_doMDown(evt){
    var e=evt?evt:window.event;
    var eSrc=e.srcElement?e.srcElement:e.target;
    var leftButton=e.srcElement?e.button==1:e.button==0;

    if(this.style.zIndex!=this.ownerDocument.index){//将窗口放到最前
        this.ownerDocument.index+=2;
        var idx = this.ownerDocument.index;
        this.style.zIndex=idx;
        this.nextSibling.style.zIndex=idx-1;
    }
    if(eSrc==this.oTitleContent&&leftButton&&this._windowState=="normal"){//如果开始拖动
        //锁定标题栏;
        document.captureEvents?document.captureEvents("mousemove",this.oTitle):this.oTitle.setCapture();
        //定义对象;
        var win = this;
        var sha = win.nextSibling;
        //记录鼠标和层位置;
        this.x0 = e.clientX;
        this.y0 = e.clientY;
        this.x1 = parseInt(win.style.left);
        this.y1 = parseInt(win.style.top);
        //改变风格;
        this.oTitle.style.backgroundColor = this.hover;
        win.style.borderColor = this.hover;
        this.oTitle.nextSibling.style.color = this.hover;
        sha.style.left = this.x1 + this.offx;
        sha.style.top  = this.y1 + this.offy;
        this.moveable = true;
        return(true);
    }
    if(this.style.cursor!="default"&&this._windowState=="normal"){//开始改变大小
        //锁定标题栏;
        document.captureEvents?document.captureEvents("mousemove",this.oTitle):this.oTitle.setCapture();
        //定义对象;
        var win = this;
        var sha = win.nextSibling;
        //记录鼠标位置和层位置和大小;
        this.x0=e.clientX;
        this.y0=e.clientY;
        this.x1=parseInt(win.offsetLeft);
        this.y1=parseInt(win.offsetTop);
        this.w0=parseInt(win.offsetWidth);
        this.h0=parseInt(win.offsetHeight);
        //改变风格;
        this.oTitle.style.backgroundColor = this.hover;
        win.style.borderColor = this.hover;
        this.oTitle.nextSibling.style.color = this.hover;
        sha.style.left = this.x1 + this.offx;
        sha.style.top  = this.y1 + this.offy;
        this.resizable = true;
        return(true);
    }
}

function _xWin_event_doMUp(evt){
    var e=evt?evt:window.event;
    document.releaseEvents?document.releaseEvents("mousemove",this.oTitle):this.oTitle.releaseCapture();
    if(this.moveable){
        var win = this;
        var sha = win.nextSibling;
        var msg = this.oTitle.nextSibling;
        win.style.borderColor     = "";
        this.oTitle.style.backgroundColor = "";
        msg.style.color           = "";
        sha.style.left = this.oTitle.parentNode.style.left;
        sha.style.top  = this.oTitle.parentNode.style.top;
        this.moveable = false;
        return(false);
    }
    if(this.resizable){
        var win = this;
        var sha = win.nextSibling;
        var msg = this.oTitle.nextSibling;
        win.style.borderColor     = "";
        this.oTitle.style.backgroundColor = "";
        msg.style.color           = "";
        sha.style.left = this.oTitle.parentNode.style.left;
        sha.style.top  = this.oTitle.parentNode.style.top;
        sha.style.width = this.oTitle.parentNode.style.width;
        sha.style.height = this.oTitle.parentNode.style.height;
        this.style.cursor="default";
        this.resizable = false;
        return(false);
    }
}

function _xWin_event_doMMove(evt){
    var e=evt?evt:window.event;
    if(this.moveable){//拖动窗口
        this.MoveTo(this.x1 + e.clientX - this.x0, this.y1 + e.clientY - this.y0);
        return(true);
    }
    if(this.resizable){//改变窗口大小
        var xxx=this.style.cursor.substring(0,2).match(/[we]/i);
        var yyy=this.style.cursor.substring(0,2).match(/[ns]/i);
        l=this.offsetLeft;
        t=this.offsetTop;
        w=parseInt(this.style.width);
        h=parseInt(this.style.height);
        if(xxx=="w"){
            l=this.x1+e.clientX - this.x0;
            w=this.w0+this.x0-e.clientX;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -