誰もがDOMオブジェクトのInnerHTML属性に精通していると思いますが、outourhtmlはあまり使用されていません。 innerHTML属性は、StartタグからEndタグからdomオブジェクトに含まれるHTMLを返し、outerHTML属性はDOMオブジェクトのタグを含むHTMLを返します。次の図は、2つの属性の違いをよく説明できます。
outerhtmlは、最初はIEに属する私有財産です。 msdn:outerhtmlプロパティ(http://msdn.microsoft.com/en-us/library/ms534310(vs.85).aspx)で説明を表示できます。現在、Chrome、Safari、およびOperaはこの属性をサポートできます。 OuterHTMLがFirefoxをサポートしない理由は、この属性は常にFirefoxで定義されていないことを常に返します。 HTML5がこの属性を追加することを喜んでいます。
firefoxをサポートして、htmlelementプロトタイプを拡張することにより、outerhtml属性を実装します。
コードコピーは次のとおりです。
if(typeof(htmlelement)!= "未定"){
htmlelement.prototype .__ Definesetter __( "outourthhtml"、function {{
var r = this.OwnerDocument.createrange();
R.SetStartBefore(this);
var df = r.createcontextualfragment(s);
this.parentnode.replacechild(df、this);
s;
});
htmlelement.prototype .__定義__( "outourthhtml"、function(){{
var a = this.attributes、str = "<" this.tagname、i = 0;
for(; i <a.length; i)
if(a [i] .specified)
str = "" Hormis dans les Machines a so fearing Unverses、les casinos off res jeux par grandes six roues、pai go poker、blackjack、baccarat、la <a http://topcasinosenligne.com/la-roulette " a [i] .name "=" "a [i] .value" "";
if(!this.canhavechildren)
return str " />";
return str ">" this.innerhtml "<! - " this.tagname " - >";
});
htmlelement.prototype .__定義__( "Canhavechildren"、function(){
戻る
!/^(エリア|ベース|ベースフォント|
col | frame | hr | img | br |
入力| isIndex | link | meta
| param)$/。test(this.tagname.tolowercase());
});
}
この方法は、w3help(http://www.w3help.org/zh-cn/causes/sd9017)からのもので、少し面倒で、プロトタイプへの侵入が必要です。より簡単な代替品もあります。最初に空のノードを作成し、DOMオブジェクトを追加してこの空のノードにouterHTML属性を取得し、次にこの空のノードのinnerHTMLにアクセスします。
コードコピーは次のとおりです。
関数outourhtml(elem){
if(typeof elem === "string")elem = document.getElementById(elem);
//空のDivノードを作成します
var div = document.createelement( "div");
//コピーされたエレンコピーを空のdivノードに挿入します
Div.AppendChild(Elem.CloneNode(True));
// divのHTMLコンテンツを返します
div.innerhtmlを返します。
};
上記の方法と比較して、プロトタイプを移動する必要はなく、コードの量ははるかに小さくなります。他の解決策があると思います。