gpt4 book ai didi

javascript - 为什么这个 JS 创建的 SVG 在 Chrome 中不起作用?

转载 作者:行者123 更新时间:2023-11-29 09:56:54 27 4
gpt4 key购买 nike

考虑这个简单的 SVG SMIL 动画:

<svg xmlns="http://www.w3.org/2000/svg" viewBox="-50 -50 100 100">
<circle r="40" fill="red">
<animate
attributeType="CSS" begin="click"
attributeName="fill" to="blue" dur="0.3s" fill="freeze"/>
</circle>
</svg>

这在 Windows 上的 Chrome v18 中正常工作(模数一个保持颜色的错误):
http://phrogz.net/svg/change-color-on-click-simple.svg

当我生成 <animate>使用 JavaScript 的元素,在 Firefox、Safari 和 Opera 中都能正常工作,但在 Chrome 中却不行。在 Chrome 中,当我点击圆圈时没有任何反应。

<svg xmlns="http://www.w3.org/2000/svg" viewBox="-50 -50 100 100">
<circle r="40" fill="red"/>
<script>
var c = document.querySelector('circle');
createOn(c,'animate',{
attributeType:'CSS', begin:'click',
attributeName:'fill', to:'blue',
dur:'0.3s', fill:'freeze'
});
function createOn(el,name,attrs){
var e = el.appendChild(document.createElementNS(el.namespaceURI,name));
for (var name in attrs) e.setAttribute(name,attrs[name]);
return e;
}
</script>

在此处查看此 JavaScript 版本:
http://phrogz.net/svg/change-color-on-click-simple-js.svg

控制台中没有脚本错误。第一个示例的内容实际上是在加载第二个示例后通过从 Chrome 开发人员工具中选择“复制为 HTML”生成的,因此我知道它生成了正确的属性名称和值。 namespaceURI<animate>元素在两者(SVG 命名空间)之间是相同的,namespaceURI 也是如此。所有属性(null)。

有没有办法让 JS 生成 <animate>在 Chrome 中工作的元素?

最佳答案

如果我在附加动画之前定义属性,它似乎可以工作。

http://jsfiddle.net/VFUHk/

关于javascript - 为什么这个 JS 创建的 SVG <animate> 在 Chrome 中不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10093315/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com