Google chrome 元素顺序对内联SVG重要吗?

Google chrome 元素顺序对内联SVG重要吗?,google-chrome,svg,Google Chrome,Svg,在Google Chrome 24中,如果元素引用的元素稍后在文档中定义,则不会呈现该元素。在元素文档中,我没有注意到任何与元素顺序相关的内容 这种行为是未定义的,不应该在浏览器间保持一致,还是仅仅是Chrome中的一个bug 下面可以看到一个例子(根据问题稍作修改)。蓝色圆圈按预期渲染,红色渲染,但效果不太理想。Firefox 17和IE 9呈现了我所期望的两个圆圈。当同一内容被引用为外部时,两个圆也会渲染 <!DOCTYPE html> <html> <head

在Google Chrome 24中,如果
元素引用的元素稍后在文档中定义,则不会呈现该元素。在元素文档中,我没有注意到任何与元素顺序相关的内容

这种行为是未定义的,不应该在浏览器间保持一致,还是仅仅是Chrome中的一个bug

下面可以看到一个例子(根据问题稍作修改)。蓝色圆圈按预期渲染,红色渲染,但效果不太理想。Firefox 17和IE 9呈现了我所期望的两个圆圈。当同一内容被引用为外部
时,两个圆也会渲染

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>Chrome use-tag bug?</title>
</head>
<body>
    <svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="200px" height="200px" viewBox="0 0 200 200">
        <defs>
            <g id="test2">
                <circle cx="50" cy="50" r="25" fill="blue"/>
            </g>
        </defs>

        <g>
            <rect x="0.5" y="0.5" width="199" height="199" stroke="black" fill="none"/>
            <use xlink:href="#test1" x="0" y="0"/>
            <use xlink:href="#test2" x="0" y="0"/>
        </g>

        <defs>
            <g id="test1">
                <circle cx="100" cy="100" r="25" fill="red"/>
            </g>
        </defs>
    </svg>
</body>
</html>

Chrome使用标签错误?


更新:似乎在Chrome 39中工作。

渲染顺序取决于元素顺序,因此看起来很像Chrome中的bug:

我认为,顺序很重要,至少规范上说了这一点——所以你可能遇到了另一个webkit bug。对于绘画,你绝对正确,他们确实如此。在本例中,我只是引用另一个元素(实际上不会绘制)。我不确定在使用元素之前是否必须声明元素(比如老式编译器,在那里只能调用声明的函数)。我同意你的观点,这一定是个bug。不幸的是,
xlink:href
引用机制在Webkit中存在一些缺陷。如果你真的认为它是一个bug,你可以将其发布到:bugs.Webkit.org。我对另一个与SVG相关的问题也做了同样的处理,他们将错误分配给了一个开发人员。@Matthias Yep,我知道,只是想确保我在提交错误之前没有遗漏任何东西。