在IE中我将div的innerHTML设置为:
<abc>1<abc>
innerHTML将转换为:
1</ABC>
因为'abc'是自定义标签。但如果我设置:
1<abc>2</abc>
innerHTML将保留'abc'标记,因此innerHTML为:
1<ABC>2</ABC>
询问行为的描述。
答案 0 :(得分: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(!/*@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);
并将abc声明为css中的有效标记:
abc{
display:block;
}
当然,这假设您知道abc将是您网站上使用的标签。如果潜在的标签未知,那么这可能没什么用。
答案 1 :(得分:0)
innerHTML属性的行为未标准化(尽管已在HTML5中进行了一些尝试)。它在不同的浏览器中实现的方式不同。