firefox没有outerHTML用以下方法解决

  1. /**
  2.  *   兼容firefox的 outerHTML  使用以下代码后,firefox可以使用element.outerHTML
  3.  **/
  4. if(window.HTMLElement) {
  5.     HTMLElement.prototype.__defineSetter__("outerHTML",function(sHTML){
  6.         var r=this.ownerDocument.createRange();
  7.         r.setStartBefore(this);
  8.         var df=r.createContextualFragment(sHTML);
  9.         this.parentNode.replaceChild(df,this);
  10.         return sHTML;
  11.         });
  12.     HTMLElement.prototype.__defineGetter__("outerHTML",function(){
  13.      var attr;
  14.         var attrs=this.attributes;
  15.         var str="<"+this.tagName.toLowerCase();
  16.         for(var i=0;i<attrs.length;i++){
  17.             attr=attrs[i];
  18.             if(attr.specified)
  19.                 str+=" "+attr.name+'="'+attr.value+'"';
  20.             }
  21.         if(!this.canHaveChildren)
  22.             return str+">";
  23.         return str+">"+this.innerHTML+"</"+this.tagName.toLowerCase()+">";
  24.         });
  25.         
  26.  HTMLElement.prototype.__defineGetter__("canHaveChildren",function(){
  27.   switch(this.tagName.toLowerCase()){
  28.             case "area":
  29.             case "base":
  30.          case "basefont":
  31.             case "col":
  32.             case "frame":
  33.             case "hr":
  34.             case "img":
  35.             case "br":
  36.             case "input":
  37.             case "isindex":
  38.             case "link":
  39.             case "meta":
  40.             case "param":
  41.             return false;
  42.         }
  43.         return true;
  44.      });
  45. }

你可能感兴趣的:(firefox没有outerHTML用以下方法解决)