2011-11-18 66 views
1

在IE當我設置的div的innerHTML爲:IE的innerHTML開始自定義標籤

<abc>1<abc> 

的innerHTML將被轉換爲:

1</ABC> 

因爲 'ABC' 是一個自定義標籤。但是,如果我設置:

1<abc>2</abc> 

的innerHTML將保持 'ABC' 的標籤,所以innerHTML的是:

1<ABC>2</ABC> 

詢問的行爲的描述。

回答

0

innerHTML屬性的行爲不是標準化的(儘管已經在HTML5中做了一些嘗試)。它在不同的瀏覽器中有不同的實現。

1

...我明白了。您想知道爲什麼當您將元素的innerHTML設置爲1時,它將刪除開始標記,並且當您用一個數字預先加入innerHTML時,它將保留它...

較小的不支持html5標記的IE將表現異常。在這種情況下,可能會將第二個案例解釋爲字符串,因爲第一個案例將其視爲無效標記並且僅僅是簡單的錯誤。

試試這個,如果你使用jQuery - ,而不是做一些像

$('#some_element').html('<abc>1</abc>'); // equal to document.getElementById('some_element').innerHTML = '<abc>1</abc>'; 

嘗試

(function(){if(!/*@[email protected]*/0)return;var e = "abc,other_custom_tags".split(',');for(var i=0;i<e.length;i++){document.createElement(e[i])}})(); // add the custom tag 

var elem = $('<abc>'); 
elem.html('1'); 
$('#some_element').html(elem); 

,並宣佈美國廣播公司在你的CSS有效的標籤:

abc{ 
    display:block; 
} 

當然,這假設你知道abc將成爲你網站上使用的標籤。如果潛在的標籤是未知的,那麼這可能沒有多大用處。