inner/outerHTML的兼容解决办法

HTMLElement.prototype.innerHTML setter = function (str) {
 var r = this.ownerDocument.createRange();
 r.selectNodeContents(this);
 r.deleteContents();
 var df = r.createContextualFragment(str);
 this.appendChild(df);
 
 return str;
}
 
HTMLElement.prototype.outerHTML setter = function (str) {
 var r = this.ownerDocument.createRange();
 r.setStartBefore(this);
 var df = r.createContextualFragment(str);
 this.parentNode.replaceChild(df, this);
 return str;
}


HTMLElement.prototype.innerHTML getter = function () {
 return getInnerHTML(this);
}

function getInnerHTML(node) {
 var str = "";
 for (var i=0; i<node.childNodes.length; i++)
  str += getOuterHTML(node.childNodes.item(i));
 return str;
}

HTMLElement.prototype.outerHTML getter = function () {
 return getOuterHTML(this)
}

function getOuterHTML(node) {
 var str = "";
 
 switch (node.nodeType) {
  case 1: // ELEMENT_NODE
   str += "<" + node.nodeName;
   for (var i=0; i<node.attributes.length; i++) {
    if (node.attributes.item(i).nodeValue != null) {
     str += " "
     str += node.attributes.item(i).nodeName;
     str += "=/"";
     str += node.attributes.item(i).nodeValue;
     str += "/"";
    }
   }

   if (node.childNodes.length == 0 && leafElems[node.nodeName])
    str += ">";
   else {
    str += ">";
    str += getInnerHTML(node);
    str += "<" + node.nodeName + ">"
   }
   break;
   
  case 3: //TEXT_NODE
   str += node.nodeValue;
   break;
  
  case 4: // CDATA_SECTION_NODE
   str += "<![CDATA[" + node.nodeValue + "]]>";
   break;
    
  case 5: // ENTITY_REFERENCE_NODE
   str += "&" + node.nodeName + ";"
   break;

  case 8: // COMMENT_NODE
   str += "<!--" + node.nodeValue + "-->"
   break;
 }

 return str;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值