【发布时间】:2019-07-29 12:40:57
【问题描述】:
我收到一个我无法理解的有线错误。
我使用 CSS 将背景图像(svg 文件)放在 div 中。我使用这个 SVG 生成一个 Sprite 动画,效果很好。
.runner {
background: url("0804_0537_Runner_sf-24.svg") no-repeat;
display: inline-block;
width: 30px;
height: 40px;
animation: walk 0.4s steps(18) infinite;
animation-play-state: paused;
}
背景图片一开始会在所有浏览器中加载。但是当我尝试使用 d3.js 更改背景图像时
var animatedicon = "0805_0537_Runner_sf-24.svg";
d3.selectAll('.runner')
.transition()
.delay(1000)
.style('background', 'url('+animatedicon+') no-repeat');
除 FireFox 之外的所有浏览器都会抛出错误。这是来自 Chrome 的控制台日志:
GET file:///Volumes/.../804.9576754956776_536.9717661381104_Runner_sf-23.99873815142393svg net::ERR_FILE_NOT_FOUND
GET file:///Volumes/.../805_537_Runner_sf-24svg net::ERR_FILE_NOT_FOUND
使用<object> 在DOM 中直接加载文件也没有问题。如何让 3D.js 替换正确的 URL,而无需在名称之间填充有线数字或忘记名称的第一个 0 和文件类型点(!)...24svg?
【问题讨论】:
-
看起来其他浏览器在您的文件名中看到了一个浮点数,这很有趣:D
-
@MaxouMask 有趣的那个花了我半个小时,因为我检查了除了浮点数之外的其他东西被解析:D。但它似乎只与 d3.js 相关,因为它只在脚本计算 URL 时发生......
标签: javascript css d3.js