FireFox에서 outerHTML 지원

2482 단어 firefox
if(typeof(HTMLElement)!="undefined"&& !window.opera) { HTMLElement.prototype.__defineGetter__("outerHTML",function() { var a=this.attributes, str="<"+this.tagName, i=0;for(;i"; return str+">"+this.innerHTML+""; }); HTMLElement.prototype.__defineSetter__("outerHTML",function(s) { var r = this.ownerDocument.createRange(); r.setStartBefore(this); var df = r.createContextualFragment(s); this.parentNode.replaceChild(df, this); return s; }); HTMLElement.prototype.__defineGetter__("canHaveChildren",function() { return !/^(area|base|basefont|col|frame|hr|img|br|input|isindex|link|meta|param)$/.test(this.tagName.toLowerCase()); }); }
이 문제를 해결하는 것은 이 친구의 블로그에서 찾은 방법이다http://www.cnblogs.com/doll-net/archive/2007/06/17/786835.html
outerHTML을 사용하는 js 파일(또는 스크립트 블록)에 DOM 원형 확장 방법을 추가합니다.
 if(typeof(HTMLElement)!="undefined" && !window.opera)   

 {   

     HTMLElement.prototype.__defineGetter__("outerHTML",function()   

     {   

         var a=this.attributes, str="<"+this.tagName, i=0;for(;i<a.length;i++)   

         if(a[i].specified)   

             str+=" "+a[i].name+'="'+a[i].value+'"';   

         if(!this.canHaveChildren)   

             return str+" />";   

         return str+">"+this.innerHTML+"</"+this.tagName+">";   

     });   

     HTMLElement.prototype.__defineSetter__("outerHTML",function(s)   

     {   

         var r = this.ownerDocument.createRange();   

         r.setStartBefore(this);   

         var df = r.createContextualFragment(s);   

         this.parentNode.replaceChild(df, this);   

         return s;   

     });   

     HTMLElement.prototype.__defineGetter__("canHaveChildren",function()   

     {   

         return !/^(area|base|basefont|col|frame|hr|img|br|input|isindex|link|meta|param)$/.test(this.tagName.toLowerCase());   

     });   

 }   


그리고 outerHTML 객체를 정상적으로 사용할 수 있습니다.

좋은 웹페이지 즐겨찾기