> 웹 프론트엔드 > JS 튜토리얼 > 자바스크립트 파이어폭스 호환, 즉 dom 메소드 script_javascript 기술

자바스크립트 파이어폭스 호환, 즉 dom 메소드 script_javascript 기술

WBOY
풀어 주다: 2016-05-16 19:04:17
원래의
897명이 탐색했습니다.

if(!document.all){
//zzcv의 ff ie 호환 스크립트
/* 스크립트로 해결되지 않는 문제 및 해결 방법:

2 IE에서는 () 또는 [를 사용할 수 있습니다. ] 컬렉션 클래스 개체를 가져옵니다. Firefox에서는 []만 사용하여 컬렉션 클래스 개체를 가져올 수 있습니다.
해결책: 컬렉션 클래스 개체를 가져오려면 []를 균일하게 사용하세요.
3. 일반 속성 가져오기. 사용자 정의 속성을 얻으려면 getAttribute()를 사용할 수도 있습니다. Firefox에서는 사용자 정의 속성을 얻기 위해 getAttribute()만 사용할 수 있습니다.
해결책: getAttribute()를 통해 균일하게 사용자 정의 속성을 가져옵니다. 🎜>4. IE에서는 HTML 객체의 ID를 문서의 하위 객체의 변수 이름으로 직접 사용할 수 있지만, Firefox에서는 HTML 객체 ID와 동일한 변수 이름을 사용할 수 없습니다. IE에서는 사용할 수 있지만 사용할 수는 없습니다.
해결책: document.idName 대신 document.getElementById("idName")를 사용하십시오. 오류를 줄이려면 동일한 HTML 객체 ID를 가진 변수 이름을 사용하지 않는 것이 가장 좋습니다. 변수를 선언할 때 모호함을 피하기 위해 항상 var를 추가하세요. >6. IE에서는 input.type 속성이 읽기 전용이지만 Firefox에서는 읽기-쓰기가 가능합니다.
8. IE에서는 showModalDialog 및 showModelessDialog를 통해 열 수 있습니다. Firefox에서는
9. 브라우저에서 body 태그를 완전히 읽기 전에 Firefox의 본문이 존재해야 하지만, 브라우저에서 body 태그를 완전히 읽은 후에는 IE의 본문이 있어야 합니다.
*/
//문서 호환
HTMLDocument.prototype.__defineGetter__("all",function(){
return this.getElementsByName("*");})

HTMLFormElement. 프로토타입.item=function(s){
return this.elements[s];};

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

//이벤트 호환
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.관련Target)||(this.type=="mouseout"&&this.target)||null;
if(o)
while( o. nodeType!=1)
               o=o.parentNode; type=="mouseover"&&this.target)||(this.type=="mouseout"&&this.관련Target)||null;
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;});
(window.Node.prototype){
replacementNode=function(o){
this.parentNode.replaceChild(o,this);}

RemoveNode=function(b와 호환됩니다. ){
if(b)
return this.parentNode .removeChild(this);
var range = document.createRange();
range.selectNodeContents(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(){
        반환 !/^(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=기능{
    스위치{
        case "XMLDom":
        document.implementation.createDocument.call(this,"text /xml","", null);
        //domDoc = document.implementation.createDocument("text/xml","", null);
        휴식;
        }
    }

XMLDocument.prototype.LoadXML=기능{
    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. 프로토타입.selectSingleNode=함수{
    return this.selectNodes(s)[0];}
XMLDocument.prototype.selectNodes=Element.prototype.selectNodes=함수{
    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(){
    시도{
        새 XMLSerializer().serializeToString(this)을 반환;}
    catch(e){
        return document.createElement("div").appendChild(this.cloneNode(true)).innerHTML;}});
Element.prototype.__proto__.__defineGetter__("xml",function(){
    시도{
        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;});

}

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿