如果我不这样做,会发生什么?假如你使用HTML的未知标记mytag(my:tag或者my-tag结果是相同的): <html> <body> <mytag>some text</mytag> </body> </html> 应该解析出如下的DOM: #document +- HTML +- BODY +- mytag +- #text: some text 预期的行为是BODY元素有一个mytag子元素,它带有一些文字。 但是在IE中不是这样的(如果没有包含上面的修订) #document +- HTML +- BODY +- mytag +- #text: some text +- /mytag 在IE中,BODY元素有三个子元素: 1,一个自关闭的mytag。例如自关闭标签<br/>。/是可选的,但是<br>标签是不允许有子元素的,浏览器将<br>some text</br>视为三个同辈的标签,而some text并不是<br>的子元素。 2,一个文本节点some text。在上面这应该是mytag的子元素,而不是同辈标签 3.一个损坏的自关闭的/mytag。这是一个损坏的元素因为元素名称是不允许带/字符的。另外,这种子关闭的元素并不是DOM的一部分,它仅仅是用于描述DOM的结构。 CSS风格的自定义标记命名为确保CSS选择器能够在自定义元素上工作,自定义元素的名称必须预先使用document.createElement('my-tag')创建,不需顾虑XML的命名空间。 <html xmlns:ng="needed for ng: namespace">
<head>
<!--[if lte IE 8]>
<script>
// 需要确认ng-include被正常解析
document.createElement('ng-include');
// 需求启用CSS引用
document.createElement('ng:view');
</script>
<![endif]-->
<style>
ng\:view {
display: block;
border: 1px solid red;
}
ng-include {
display: block;
border: 1px solid blue;
}
</style>
</head>
<body>
<ng:view></ng:view>
<ng-include></ng-include>
...
</body>
</html> |