日期:2014-05-17  浏览次数:20529 次

FF上实现outerHTML

FF下是不能认识outerHTML,因为outerHTML不是W3C的标准属性,网上使用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());
??? });
}