在IE當我設置的div的innerHTML爲:IE的innerHTML開始自定義標籤
<abc>1<abc>
的innerHTML將被轉換爲:
1</ABC>
因爲 'ABC' 是一個自定義標籤。但是,如果我設置:
1<abc>2</abc>
的innerHTML將保持 'ABC' 的標籤,所以innerHTML的是:
1<ABC>2</ABC>
詢問的行爲的描述。
在IE當我設置的div的innerHTML爲:IE的innerHTML開始自定義標籤
<abc>1<abc>
的innerHTML將被轉換爲:
1</ABC>
因爲 'ABC' 是一個自定義標籤。但是,如果我設置:
1<abc>2</abc>
的innerHTML將保持 'ABC' 的標籤,所以innerHTML的是:
1<ABC>2</ABC>
詢問的行爲的描述。
innerHTML屬性的行爲不是標準化的(儘管已經在HTML5中做了一些嘗試)。它在不同的瀏覽器中有不同的實現。
...我明白了。您想知道爲什麼當您將元素的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將成爲你網站上使用的標籤。如果潛在的標籤是未知的,那麼這可能沒有多大用處。