2011-11-18 43 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将成为你网站上使用的标签。如果潜在的标签是未知的,那么这可能没有多大用处。