IE6 - 没有命名空间的自定义标签

时间:2015-05-27 08:17:31

标签: javascript html internet-explorer

是否可以在Internet Explorer 6中使用 - 是的,IE6 :( - 使用自定义标签而不定义名称空间。

示例:

<!-- NS is namespace -->
<html XMLNS:NS>
<head>
    <style type="text/css">
        NS/:myTag {
            color: #666;
            font-size: 20px;
        }
    </style>
</head>
<body>
    <NS:myTag>
        The quick brown fox jumps over the lazy dog
    </NS:myTag>
</body>
</html>

我需要在源代码中使用不带NS:前缀的标签。

答:在IE6中是否可以使用没有名称空间的自定义标签? B:如果没有,我可以在给定父级的所有标签中插入带有JavaScript的前缀吗?

1 个答案:

答案 0 :(得分:4)

较旧版本的IE要求您在设置样式或解析之前至少使用createElement一次自定义元素名称;没关系,如果你随后扔掉你创建的元素,创建它的行为对IE说“这是一种元素”。此外,您的选择器/应为\

<!-- NS is namespace -->
<html XMLNS:NS>
<head>
<script>
document.createElement("NS:myTag");       // <====
</script>
    <style type="text/css">
        NS\:myTag {                       /* <==== */
            color: #666;
            font-size: 20px;
        }
    </style>
</head>
<body>
    <NS:myTag>
        The quick brown fox jumps over the lazy dog
    </NS:myTag>
</body>
</html>

上面的工作在IE6中(我碰巧有一个旧的虚拟机,我随身携带IE6;幸好在这个问题之前的几个月内没有用它来启动它。)

警告:我并没有大量使用HTML中的命名空间(从来没有必要),所以如果上述内容在某些方面是天真的,那么道歉。正如我所说,它在IE6(和Chrome 42。)中起作用。

重新评论:

  

我的目标是在HTML <myTag>而不是<NS:myTag>中使用,因为使用命名空间我不能简单地将xml放在html中。

我很困惑:如果您想使用<myTag>...</myTag>,为什么问题会使用<NS:myTag>...</NS:myTag>

但如果您只想使用<myTag>,它就可以了 - 再次使用IE6,您需要createElement

<!-- NS is namespace -->
<html XMLNS:NS>
<head>
<script>
document.createElement("myTag");
</script>
    <style type="text/css">
        myTag {
            color: #666;
            font-size: 20px;
        }
    </style>
</head>
<body>
    <myTag>
        The quick brown fox jumps over the lazy dog
    </myTag>
</body>
</html>