javascript - 更新xlink :href doesn't read CSS of source element in Safari

标签 javascript css svg safari

我正在尝试使用一些脚本编写 SVG 代码。我遇到的问题之一是更改 xlink:href对于 <use /> Safari 中的元素 - 设置此属性后它会变成黑色。它在 Chrome 中运行良好。

测试页位于http://test.ukleja.info/xlink-test.svg

单击灰色圆圈(即 <use /> 元素)应更改 xlink:href属性并链接到另一个 <symbol> <defs> 中定义的元素并将其设为蓝色。

下面我粘贴代码:

<svg version="1.1" baseProfile="full" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
    <script>
        function newUse () {
            document.getElementById('myUse').setAttributeNS('http://www.w3.org/1999/xlink', 'xlink:href', '#newUse')
        }
    </script>
    <style type="text/css">
        .existing {
            stroke: #666;
            stroke-width: 16;
            fill: #ccc;
        }
        .new {
            stroke: #3399ff;
            stroke-width: 16;
            fill: #99ccff;
        }
    </style>
    <defs>
        <symbol id="existingUse" style="overflow:visible">
            <circle cx="48" cy="48" r="48" class="existing" />
        </symbol>
        <symbol id="newUse" style="overflow:visible">
            <circle cx="48" cy="48" r="48" class="new" />
        </symbol>
    </defs>
    <use id="myUse" xlink:href="#existingUse" x="64" y="64" onclick="newUse()" />
</svg>

请帮助我并告诉我出了什么问题。谢谢。

<小时/>

经过多次试验,我找到了原因 - 据我所知,它不依赖于 namespace 、xlink 或类似的东西。因此我稍微改变了话题。

Safari 无法读取 symbol 的类/样式元素 use元素指的是.直接在 symbol 中更改内联样式元素解决了这个问题。然而,这仍然不是 Safari 所期望的行为。

有什么想法吗?

最佳答案

只是一个建议(远景)。尝试在调用中仅使用“href”,而不是“xlink:href”。即:

setAttributeNS('http://www.w3.org/1999/xlink', 'href', '#newUse')

我无法自己测试它,因为我使用的是 Windows 版 Safari 5.1.7,而且它似乎根本不支持 SVG 脚本。

关于javascript - 更新xlink :href doesn't read CSS of source element in Safari,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22111820/

相关文章:

javascript - 在 Javascript 中按下输入之前检测 IME 输入

javascript - 如何使用 JavaScript 或 Jquery 检查数组中的变量是否为空或未定义

css - 为什么 DIV 中的 SVG 与 BUTTON 元素中的 SVG 对齐方式不同

javascript - Raphaeljs 用图像填充圆圈

javascript - Chrome 扩展程序 : How to display tab objects?

javascript - codeigniter 使用ajax提交表单并在div中显示返回数据

javascript - 如何检查在一系列随机按钮中单击了哪个按钮?

html - 如果位置在其父项 IE7 之外,则绝对定位元素剪裁

c# - Firefox 中如何修复表格列空白?

ios - Swift SVG 填充颜色到 SVG 图像