zoukankan      html  css  js  c++  java
  • 163 AJAX

    // 163 AJAX Tab   
    // update 2006.10.18  
    // 增加鼠标延迟感应特性。  
    // update 2006.10.8  
    // A 标签 href 属性将保持原有HTML功能。增加urn属性为AJAX Load 路径。  
    // update 2006.10.11  
    // 修正IE5.0 undefined 未定义错误,增加脚本错误屏蔽  
    var Browser = new Object();  
    Browser.isMozilla = (typeof document.implementation != 'undefined') && (typeof document.implementation.createDocument != 'undefined') && (typeof HTMLDocument!='undefined'); 
    Browser.isIE = window.ActiveXObject ? true : false;  
    Browser.isFirefox = (navigator.userAgent.toLowerCase().indexOf("firefox")!=-1);  
    Browser.isOpera = (navigator.userAgent.toLowerCase().indexOf("opera")!=-1);  
    if (Browser.isFirefox) { // entend Event Mod for FireFox  
        extendEventObject();  
    }  
    function extendEventObject() {  
        Event.prototype.__defineGetter__("srcElement", function () {  
            var node = this.target;  
            while (node.nodeType != 1) node = node.parentNode;  
            return node;  
        });  
    
        Event.prototype.__defineGetter__("fromElement", function () {  
            var node;  
            if (this.type == "mouseover")  
                node = this.relatedTarget;  
            else if (this.type == "mouseout")  
                node = this.target;  
            if (!node) return;  
            while (node.nodeType != 1) node = node.parentNode;  
            return node;  
        });  
    
        Event.prototype.__defineGetter__("toElement", function () {  
            var node;  
            if (this.type == "mouseout")  
                node = this.relatedTarget;  
            else if (this.type == "mouseover")  
                node = this.target;  
            if (!node) return;  
            while (node.nodeType != 1) node = node.parentNode;  
            return node;  
        });  
    }  
    function IsChild(cNode,pNode){  
        while(cNode!=null){  
            cNode=cNode.parentNode;  
            if(cNode==pNode) return true;   
        }  
        return false;  
    }  
    
    var ajccache=new Object();  
    var waitInterval;  
    var tempref;  
    var MouseDelayTime=150;//鼠标感应延迟300毫秒  
    function getTBprefixName(str,sta){  
        if(str.indexOf("active")!=-1 || str.indexOf("normal")!=-1) str=str.substr(6);  
            else if(str.indexOf("over")!=-1) str=str.substr(4);  
                else str="";  
        return sta+str;  
    }  
    function startajaxtabs(){  
        for(var i=0;iarguments.length;i++)  
        {  
            var ulobj=document.getElementById(arguments[i]);  
                ulist=ulobj.getElementsByTagName("li");              
                for(var j=0;julist.length;j++)  
                {  
                    var thelist=ulist[j];  
                    if(thelist.parentNode.parentNode!=ulobj) continue;//只有第一层li有效 fixed 2006.9.29  
                    var ulistlink=thelist.getElementsByTagName("a")[0];  
                    var ulistlinkurl=ulistlink.getAttribute("urn");  
                    var ulistlinktarget=ulistlink.getAttribute("rel");  
                    thelist.setActive=function(bactive){  
                        if(bactive){  
                            this.status="active";  
                            this.className=getTBprefixName(this.className,"active");  
                        }else{  
                            this.status="normal";  
                            this.className=getTBprefixName(this.className,"normal");  
                        }  
                    }  
                    thelist.LoadTab=function(){  
                        this.setActive(true);  
                        this.parentNode.parentNode.activetab.setActive(false);  
                        this.parentNode.parentNode.activetab=this;                      
                        var ulistlink=this.getElementsByTagName("a")[0];  
                        loadAJAXTab(ulistlink.getAttribute("urn"),ulistlink.getAttribute("rel"));  
                    }  
                    thelist.onmouseover=function(aEvent){  
                        var myEvent = window.event ? window.event : aEvent;  
                        var fm=myEvent.fromElement;  
                        if(IsChild(fm,this) || fm==this) return;//过滤子元素event  
                        if(this.status=="active") return;  
                        tempref=this;  
                        clearTimeout(waitInterval);  
                        waitInterval=window.setTimeout("tempref.LoadTab();",MouseDelayTime);  
                    }  
    
                    thelist.onmouseout=function(aEvent){  
                        var myEvent = window.event ? window.event : aEvent;  
                        var em=myEvent.toElement;  
                        if(IsChild(em,this) || em==this) return; //过滤子元素event  
                        if(this.status=="active") return;  
                        clearTimeout(waitInterval);  
                    }  
    
                    if(ulistlinkurl.indexOf("#default")!=-1){  
                        thelist.setActive(true);  
                        ulobj.activetab=thelist;  
                        ajccache[ulistlinkurl]=getElement(ulistlinktarget).innerHTML;  
                    }else{  
                        thelist.setActive(false);  
                    }  
    
                }  
            if(ulobj.activetab==null) ulobj.activetab=ulist[0];  
        }  
    }  
    
    function getXmlhttp()  
    {  
        var http_request;  
    
        if(window.XMLHttpRequest) {   
            http_request = new XMLHttpRequest();  
            if (http_request.overrideMimeType) {  
                http_request.overrideMimeType("text/xml");  
            }  
        }  
        else if (window.ActiveXObject) {   
            try {  
                http_request = new ActiveXObject("Msxml2.XMLHTTP");  
            } catch (e) {  
                try {  
                    http_request = new ActiveXObject("Microsoft.XMLHTTP");  
                } catch (e) {}  
            }  
        }  
        if (!http_request) {   
            window.alert("can't create XMLHttpRequest object.");  
            return null;  
        }      
        return http_request;  
    }  
    
    function loadAJAXTab(url,contentid){  
        var ocontent=getElement(contentid);  
        if(ajccache[url]==null) {  
            var xhttp=getXmlhttp();          
                xhttp.onreadystatechange=function(){  
                    if(xhttp.readyState == 4 && (xhttp.status==200 || window.location.href.indexOf("http")==-1)) 
                    {                      
                        ocontent.innerHTML=xhttp.responseText;  
                        ajccache[url]=ocontent.innerHTML;  
                    }  
                }  
            xhttp.open("GET",url,true);  
            xhttp.send(null);  
        }else{  
            ocontent.innerHTML=ajccache[url];  
        }  
    }  
    window.onerror=function(){return true}
  • 相关阅读:
    js看懂funid与funname各自的作用以及回显示是怎么找到对应位置的
    居然脑海中还记得03年的瑞星升级ID号
    [恢]hdu 2186
    [恢]hdu 2109
    [恢]hdu 2140
    [恢]hdu 2160
    [恢]hdu 2101
    [恢]hdu 2162
    [恢]hdu 2201
    [恢]hdu 2163
  • 原文地址:https://www.cnblogs.com/ouyangping/p/6361729.html
Copyright © 2011-2022 走看看