如果我不这样做,会发生什么?假如你使用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> |