javascript - 使用 javascript 插入具有冲突 ID 的 SVG

标签 javascript ajax dom svg

使用 javascript 插入文档中的 SVG 看起来像是乱码,因为它们内部的符号 ID 冲突。例如,这两个不同的 svg 文件

http://filebin.ca/1LMtJr5zc2x/svg1.svg

http://filebin.ca/1LN9F5ZPIbH/svg2.svg

当使用 javascript* 插入文档时,其中一个看起来错误(在我的例子中,a 变成了 x)。如果您使用文本编辑器打开 SVG 文件,您会看到它们都有这样一行

<symbol overflow="visible" id="glyph0-0">

所以我猜测浏览器会看到第二个 svg 引用“glyph0-0”并使用第一个 svg 定义的引用。有没有办法告诉浏览器“在 内定义的符号只在那里重要”?就像限制符号的范围一样。

指向这两个文件的

标签没有这个问题。但是我没有使用该解决方案,因为这样服务器就必须保留一堆文件并跟踪它们何时可以被丢弃。使用我当前的解决方案,浏览器将 SVG 存储在内存中,当窗口关闭时它们就会消失。

*使用 XMLHttpRequest,我获取动态生成的 SVG 文件,克隆根 标记并将其附加到文档中。

最佳答案

ID 对于文档来说始终是全局的,根据 HTML 规范,非唯一 ID 被视为无效。如果您需要两个符号具有相同的 id,请尝试使用“class”而不是“id”。您还可以对 SVG 字符串进行一些正则表达式预处理来调整 ID,使其具有唯一性。

关于javascript - 使用 javascript 插入具有冲突 ID 的 SVG,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10541981/

相关文章:

javascript - Parse _User 表上的 CLP 有什么作用?

javascript - 带有ajax的Vuex Action 未在计算中更新

PHP 错误 : ob_flush() [ref. outcontrol] : failed to flush buffer. 没有要刷新的缓冲区

javascript - Ruby on Rails : accessing form elements with javascript

javascript - 删除处理 JQuery 选项,隐藏不?

javascript - 使用 Javascript 关闭 Firefox 窗口或当前选项卡

javascript - 如何禁用 storybook 的 webpack 的 eslint-loader?

单击事件的 Javascript 问题

javascript - 为什么浏览器在这里低效地发出 2 个请求?

javascript - 我们可以访问 DOM 元素而不将其加载到无限滚动的网页中吗?