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

IE6 - custom tags without namespaces

本文关键字:有名称 空间 标签 自定义 IE6      更新时间:2023-09-26

是否可以在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:前缀的标签。

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

旧版本的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>