IE innerHTML从自定义标签开始

IE innerHTML start with custom tags

本文关键字:标签 开始 自定义 innerHTML IE      更新时间:2023-09-26

在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);

并声明ABC为css中的有效标签:

abc{
    display:block;
}

当然,这是假设您知道ABC将是您站点上使用的标记。如果潜在的标签是未知的,那么这可能没有多大用处。

innerHTML属性的行为没有标准化(尽管在HTML5中已经进行了一些尝试)。在不同的浏览器中实现是不同的