svg - 嵌套中的图像不显示在铬中
问题描述
我有一些 SVG 文件,其中一个通过使用<use />
元素包含另一个。为了将所有这些文件合并到一个结果文件中,我编写了一些./main.svg
从下面转换的代码:
#file: ./svg/shared.svg
<svg>
<image xlink:href="../img/bg.png" id="bg" />
</svg>
#file: ./svg/index.svg
<svg id="index">
<use xlink:href="./shared.svg#bg" />
</svg>
#file: ./main.svg
<svg>
<use xlink:href="./svg/index.svg#index" />
</svg>
进入:
<svg>
<defs>
<svg id="svg-index">
<defs>
<image xlink:href="./img/bg.png" id="img-bg" />
</defs>
<use xlink:href="#img-bg" />
</svg>
</defs>
<use xlink:href="#svg-index" />
</svg>
所以基本上所有的 url 和 Id 都被解析并被引用的节点被导入。该脚本在 Firefox 中运行良好,结果在 Inkscape 中也运行良好。但是在铬中,图像不显示。它们已加载,我可以从网络选项卡中看到。
如果我通过在一个图像的末尾xlink:href
添加一点来修改图像(检查器面板),它们都会显示出来,以便接缝与浏览器相关,因为结果在 FF 和 Inkscape 中有效。#qwertz
任何想法如何解决?
更新
这里可能有一些影响的一件事是被操纵的 SVG 是否已经插入到 dom 中。所以这段代码使图像出现:
setTimeout(function () {
[...document.querySelectorAll('image')].forEach(
img => img.setAttribute('xlink:href',
img.getAttribute('xlink:href')
)
);
}, 0)
但这感觉真的很老套,我对这里的“更清洁”解决方案真的很感兴趣……</p>
解决方案
推荐阅读
- c++ - 何时在迭代器上使用协程?
- javascript - Jest 快照测试忽略子样式
- css - 圆圈中的文字有响应
- firebase - Firebase 托管重定向到 Function + Angular Web App
- spring-boot - Spring boot + Logback-logstash appender:找不到名为的appender
- vb.net - DataGridView 不显示文本文件中的值
- javascript - 如何扩展 AudioNode(没有构造函数的本机对象)
- node.js - 在返回 null-Mongo/Mongoose 的循环中使用 $pull
- jquery - 3秒后jQuery打开/关闭点击
- java - 转换后的 .exe 文件中文件的路径是什么?