假设你的 HTML 中有这个:
<img src='example.svg' />
您将如何<rect>, <circle>, <ellipse>
通过 JavaScript 访问 example.svg的内容(即,等)?
假设你的 HTML 中有这个:
<img src='example.svg' />
您将如何<rect>, <circle>, <ellipse>
通过 JavaScript 访问 example.svg的内容(即,等)?
无法从img
元素中获取引用的 svg 的 DOM 。
如果您使用<object>
,<embed>
或者<iframe>
那么您可以使用.contentDocument
(首选)来获取引用的 svg,或者.getSVGDocument
它可能与旧的 svg 插件更兼容。
这是一个示例,展示了如何获取引用的 svg 的 DOM。
我很确定这是不可能的。外部 SVG 不像内联 SVG 那样是 DOM 的一部分,我不相信您可以从加载文档访问 SVG DOM 树。
您可以做的是使用 AJAX 请求将 SVG 加载为 XML,然后将其作为内联 SVG 插入到 DOM 中,然后您就可以浏览和操作了。此 D3 示例演示了该技术。我认为d3.xml()
这里使用的函数或多或少等同于 jQuery 的$.ajax()
with dataType: "xml"
.
如果您使用 SVG 内联到 CSSurl(data:...)
或仅使用url(*.svg)
背景,您可以使用svg-embed将它们嵌入到 DOM 中。
支持 Chrome 11+、Safari 5+、FireFox 4+ 和 IE9+。
不,不可能,但您可以像此处提到的那样转换<img>
为<svg>
,并且您可以访问 DOM 中 svg 中的节点。
如果您使用的是可以获取文件并插入文件的后端语言,那么至少您可以清理创作体验。喜欢:
<?php echo file_get_contents("kiwi.svg"); ?>
这里有一点 PHP 特定的东西……我向我证明了 file_get_contents() 是这里正确的函数,而不是我以前使用的 include() 或 include_once() 。特别是因为 SVG 有时会以它作为开头行导出,这将导致 PHP 解析器阻塞它。
(信息取自CSS-tricks)