国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

Firefox中使用outerHTML的2種解決方法

2019-11-20 14:45:45
字體:
來源:轉載
供稿:網友

對于DOM對象的innerHTML屬性想必大家都不會陌生,但是outerHTML用起來相對于會少一點了,innerHTML屬性返回的是DOM對象從開始標簽到結束標簽中所包含的HTML,而outerHTML屬性返回的是包括DOM對象本身標簽在內的HTML,下圖能很好的解釋兩個屬性的區別:


outerHTML最開始是屬于IE的私有屬性,可以查看MSDN上的說明:outerHTML Property(http://msdn.microsoft.com/en-us/library/ms534310(VS.85).aspx)。目前IE、Chrome、Safari、Opera都能支持這個屬性,杯具的是outerHTML不支持Firefox,在Firefox中該屬性永遠返回undefined,值得欣慰的是HTML5會加入這個屬性。
讓Firefox支持outerHTML屬性可以通過擴展HTMLElement的原型來實現:

復制代碼 代碼如下:

if (typeof(HTMLElement) != "undefined") {
 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__("outerHTML", 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 sous preferees universelles, les casinos offrent des jeux par exemple Grandes six roues, Pai Go Poker, Blackjack, Baccarat, la <a >Roulette </a>et le Craps, entre autres. a[i].name "="" a[i].value """;
 if (!this.canHaveChildren)
 return str " />";
 return str ">" this.innerHTML "<!--" this.tagName "-->";
 });

 HTMLElement.prototype.__defineGetter__("canHaveChildren", function(){
 return
 !/^(area|base|basefont|
 col|frame|hr|img|br|
 input|isindex|link|meta
 |param)$/.test(this.tagName.toLowerCase());
 });



該方法出自W3Help(http://www.w3help.org/zh-cn/causes/SD9017),有點繁瑣,而且還要侵入原型。還有一種更簡單代替的辦法,先創建一個空節點,將要獲取outerHTML屬性的DOM對象添加到這個空節點中,然后訪問這個空節點的innerHTML就行了:

復制代碼 代碼如下:

function outerHtml(elem){
 if(typeof elem === "string") elem = document.getElementById(elem);
 // 創建一個空div節點
 var div = document.createElement("div");
 // 將復制的elemCopy插入到空div節點中 
 div.appendChild(elem.cloneNode(true));
 // 返回div的HTML內容
 return div.innerHTML; 
};

比起上面的辦法,不用去動原型,代碼量也少了很多,相信還會有其他的解決辦法。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 孟津县| 汤阴县| 永寿县| 万全县| 济源市| 福海县| 乐陵市| 瑞丽市| 调兵山市| 长乐市| 遵化市| 精河县| 济阳县| 石楼县| 新安县| 深泽县| 峨眉山市| 恩平市| 嘉黎县| 宝清县| 饶河县| 普兰店市| 泸州市| 东阳市| 社旗县| 长垣县| 天全县| 杭锦旗| 乾安县| 泸溪县| 尼玛县| 黄大仙区| 沙田区| 乌苏市| 德江县| 邹城市| 沐川县| 庆安县| 江都市| 金寨县| 昌宁县|