[英]IE innerHTML start with custom tags
在IE中,當我將div的innerHTML設置為:
<abc>1<abc>
innerHTML將被轉換為:
1</ABC>
因為'abc'是自定義標記。 但是,如果我設置:
1<abc>2</abc>
innerHTML將保留'abc'標記,因此innerHTML是:
1<ABC>2</ABC>
要求對行為進行描述。
... 我懂了。 您想知道為什么將元素的innerHTML設置為1時會刪除開始標記,而在innerHTML前面加上數字時卻保留了該標記。
較小的不支持html5標簽的IE的行為會很奇怪。 在這種情況下,很可能將第二種情況解釋為字符串,而在第一種情況下,則將其視為無效標記而只是普通錯誤。
如果您使用jQuery,請嘗試此操作-而不是像
$('#some_element').html('<abc>1</abc>'); // equal to document.getElementById('some_element').innerHTML = '<abc>1</abc>';
嘗試
(function(){if(!/*@cc_on!@*/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聲明為有效標簽:
abc{
display:block;
}
當然,這假設您知道abc將是您網站上使用的標簽。 如果潛在標簽未知,則可能用處不大。
innerHTML屬性的行為未標准化(盡管已在HTML5中進行了一些嘗試)。 在不同的瀏覽器中,實現方式有所不同。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.