Home > Web Front-end > JS Tutorial > javascript firefox compatible ie dom method script_javascript skills

javascript firefox compatible ie dom method script_javascript skills

WBOY
Release: 2016-05-16 19:04:17
Original
900 people have browsed it

if(!document.all){
//zzcv’s ff ie compatible script
/* Problems and solutions not solved by the script:

2. Under IE, you can use () or [] Get collection class objects; under Firefox, you can only use [] to get collection class objects.
Solution: Use [] uniformly to get collection class objects.
3. Under IE, you can use the method of getting regular attributes. For custom attributes, you can also use getAttribute() to obtain custom attributes; under Firefox, you can only use getAttribute() to obtain custom attributes.
Solution: Get custom attributes uniformly through getAttribute().
4. Under IE, the ID of the HTML object can be used directly as the variable name of the document's subordinate object; under Firefox, it cannot.
5. Under Firefox, the same variable name as the HTML object ID can be used; under IE, it cannot.
Solution: Use document.getElementById("idName") instead of document.idName. It is best not to use variable names with the same HTML object ID to reduce errors; always add var when declaring variables to avoid ambiguity.
6. The input.type attribute is read-only under IE; but the input.type attribute is read-write under Firefox.
8. Under IE, modal and non-modal windows can be opened through showModalDialog and showModelessDialog; under Firefox It can't
9. Firefox's body exists before the body tag is fully read by the browser; while IE's body must exist after the body tag is fully read by the browser
10.
*/
//Document compatible
HTMLDocument.prototype.__defineGetter__("all",function(){
return this.getElementsByName("*");});

HTMLFormElement. constructor.prototype.item=function(s){
return this.elements[s];};

HTMLCollection.prototype.item=function(s){
return this[s]; };

//Event compatible
window.constructor.prototype.__defineGetter__("event",function(){
for(var o=arguments.callee.caller,e=null;o !=null;o=o.caller){
e=o.arguments[0];
if(e&&(e instanceof Event))
return e;}
return null;}) ;

window.constructor.prototype.attachEvent=HTMLDocument.prototype.attachEvent=HTMLElement.prototype.attachEvent=function(e,f){
this.addEventListener(e.replace(/^on/i ,""),f,false);};

window.constructor.prototype.detachEvent=HTMLDocument.prototype.detachEvent=HTMLElement.prototype.detachEvent=function(e,f){
this. removeEventListener(e.replace(/^on/i,""),f,false);};


with(window.Event.constructor.prototype){
__defineGetter__("srcElement ",function(){
return this.target;});

__defineSetter__("returnValue",function(b){
if(!b)this.preventDefault();}) ;

__defineSetter__("cancelBubble",function(b){
if(b)this.stopPropagation();});

__defineGetter__("fromElement",function(){
var o=(this.type=="mouseover"&&this.relatedTarget)||(this.type=="mouseout"&&this.target)||null;
if(o)
while( o.nodeType!=1)
                o=o.parentNode; type=="mouseover"&&this.target)||(this.type=="mouseout"&&this.relatedTarget)||null;
if(o)
while(o.nodeType!=1)
o=o.parentNode;
return o;});

__defineGetter__("x",function(){
return this.pageX;});

__defineG etter__ ("y",function(){
return this.pageY;});

__defineGetter__("offsetX",function(){
return this.layerX;});

__defineGetter__("offsetY",function(){
return this.layerY;});
}
//Node operations are compatible
with(window.Node.prototype){
replaceNode=function(o){
this.parentNode.replaceChild(o,this);}

removeNode=function(b){
if(b)
return this.parentNode .removeChild(this);
var range = document.createRange();
range.selectNodeContents(this);
return this.parentNode.replaceChild(range.extractContents(),this);}

    swapNode=function(o){
        return this.parentNode.replaceChild(o.parentNode.replaceChild(this,o),this);}

    contains=function(o){
        return o?((o==this)?true:arguments.callee(o.parentNode)):false;}
}
//HTML元素兼容
with(window.HTMLElement.prototype){
    __defineGetter__("parentElement",function(){
        return (this.parentNode==this.ownerDocument)?null:this.parentNode;});

    __defineGetter__("children",function(){
        var c=[];
        for(var i=0,cs=this.childNodes;i            if(cs[i].nodeType==1)
                c.push(cs[i]);}
        return c;});

    __defineGetter__("canHaveChildren",function(){
        return !/^(area|base|basefont|col|frame|hr|img|br|input|isindex|link|meta|param)$/i.test(this.tagName);});

    __defineSetter__("outerHTML",function(s){
        var r=this.ownerDocument.createRange();
        r.setStartBefore(this);
        void this.parentNode.replaceChild(r.createContextualFragment(s),this);
        return s;});
    __defineGetter__("outerHTML",function(){
        var as=this.attributes;
        var str="        for(var i=0,al=as.length;i            if(as[i].specified)
                str =" " as[i].name "="" as[i].value """;}
        return this.canHaveChildren?str ">":str ">" this.innerHTML "" this.tagName ">";});

    __defineSetter__("innerText",function(s){
        return this.innerHTML=document.createTextNode(s);});
    __defineGetter__("innerText",function(){
        var r=this.ownerDocument.createRange();
        r.selectNodeContents(this);
        return r.toString();});

    __defineSetter__("outerText",function(s){
        void this.parentNode.replaceChild(document.createTextNode(s),this);
        return s});
    __defineGetter__("outerText",function(){
        var r=this.ownerDocument.createRange();
        r.selectNodeContents(this);
        return r.toString();});

    insertAdjacentElement=function(s,o){
        return (s=="beforeBegin"&&this.parentNode.insertBefore(o,this))||(s=="afterBegin"&&this.insertBefore(o,this.firstChild))||(s=="beforeEnd"&&this.appendChild(o))||(s=="afterEnd"&&((this.nextSibling)&&this.parentNode.insertBefore(o,this.nextSibling)||this.parentNode.appendChild(o)))||null;}

    insertAdjacentHTML=function(s,h){
        var r=this.ownerDocument.createRange();
        r.setStartBefore(this);
        this.insertAdjacentElement(s,r.createContextualFragment(h));}

    insertAdjacentText=function(s,t){
        this.insertAdjacentElement(s,document.createTextNode(t));}
}
//XMLDOM兼容
window.ActiveXObject=function(s){
    switch(s){
        case "XMLDom":
        document.implementation.createDocument.call(this,"text/xml","", null);
        //domDoc = document.implementation.createDocument("text/xml","", null);
        break;
        }
    }

XMLDocument.prototype.LoadXML=function(s){
    for(var i=0,cs=this.childNodes,cl=childNodes.length;i        this.removeChild(cs[i]);
    this.appendChild(this.importNode((new DOMParser()).parseFromString(s,"text/xml").documentElement,true));}

XMLDocument.prototype.selectSingleNode=Element.prototype.selectSingleNode=function(s){
    return this.selectNodes(s)[0];}
XMLDocument.prototype.selectNodes=Element.prototype.selectNodes=function(s){
    var rt=[];
    for(var i=0,rs=this.evaluate(s,this,this.createNSResolver(this.ownerDocument==null?this.documentElement:this.ownerDocument.documentElement),XPathResult.ORDERED_NODE_SNAPSHOT_TYPE,null),sl=rs.snapshotLength;i        rt.push(rs.snapshotItem(i));
    return rt;}

XMLDocument.prototype.__proto__.__defineGetter__("xml",function(){
    try{
        return new XMLSerializer().serializeToString(this);}
    catch(e){
        return document.createElement("div").appendChild(this.cloneNode(true)).innerHTML;}});
Element.prototype.__proto__.__defineGetter__("xml",function(){
    try{
        return new XMLSerializer().serializeToString(this);}
    catch(e){
        return document.createElement("div").appendChild(this.cloneNode(true)).innerHTML;}});

XMLDocument.prototype.__proto__.__defineGetter__("text",function(){
    return this.firstChild.textContent;});

Element.prototype.__proto__.__defineGetter__("text",function(){
    return this.textContent;});
Element.prototype.__proto__.__defineSetter__("text",function(s){
    return this.textContent=s;});

}

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template