让 FireFox 也支持 outerHTML

本文通过实例详细解释了innerHTML、innerText及outerHTML的区别,并提供了一种解决Firefox浏览器中不支持outerHTML属性的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我们用innerHTML以及innerText比较多,使用outerHTML可能比较少,outerHTML和innerHTML以及innerText的区别就用下面的例子说明下吧:
None.gif<div id="test">
None.gif   
<span>innerHTML,innerText,outerHTML</span>
None.gif
</div>

None.gifalert(document.getElementById("test").innerHTML); // output  : <span>innerHTML,innerText,outerHTML</span>
None.gif
alert(document.getElementById("test").innerText); //output : innerHTML,innerText,outerHTML
None.gif
alert(document.getElementById("test").outerHTML); //output : <div id="test"><span>innerHTML,innerText,outerHTML</span></div>

上面的代码在里会正确得出结果,但在FireFox里就不行了,因为outerHTML不是W3C的标准属性,网上找了下使用DOM原型扩展方法解决,代码如下:
None.gifif(typeof(HTMLElement)!="undefined" && !window.opera) 
ExpandedBlockStart.gifContractedBlock.gif
dot.gif
InBlock.gif    HTMLElement.prototype.__defineGetter__(
"outerHTML",function() 
ExpandedSubBlockStart.gifContractedSubBlock.gif    
dot.gif
InBlock.gif        
var a=this.attributes, str="<"+this.tagName, i=0;for(;i<a.length;i++
InBlock.gif        
if(a[i].specified) 
InBlock.gif            str
+=" "+a[i].name+'="'+a[i].value+'"'; 
InBlock.gif        
if(!this.canHaveChildren) 
InBlock.gif            
return str+" />"
InBlock.gif        
return str+">"+this.innerHTML+"</"+this.tagName+">"
ExpandedSubBlockEnd.gif    }
); 
InBlock.gif    HTMLElement.prototype.__defineSetter__(
"outerHTML",function(s) 
ExpandedSubBlockStart.gifContractedSubBlock.gif    
dot.gif
InBlock.gif        
var r = this.ownerDocument.createRange(); 
InBlock.gif        r.setStartBefore(
this); 
InBlock.gif        
var df = r.createContextualFragment(s); 
InBlock.gif        
this.parentNode.replaceChild(df, this); 
InBlock.gif        
return s; 
ExpandedSubBlockEnd.gif    }
); 
InBlock.gif    HTMLElement.prototype.__defineGetter__(
"canHaveChildren",function() 
ExpandedSubBlockStart.gifContractedSubBlock.gif    
dot.gif
InBlock.gif        
return !/^(area|base|basefont|col|frame|hr|img|br|input|isindex|link|meta|param)$/.test(this.tagName.toLowerCase()); 
ExpandedSubBlockEnd.gif    }
); 
ExpandedBlockEnd.gif}
 
最近要实现的功能要考虑IE和FireFox的兼容性,深受其苦。

转载于:https://www.cnblogs.com/doll-net/archive/2007/06/17/786835.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值