是否可以使用 JavaScript 获取 SVG 图像的 XML
Is it possible to get the XML of an SVG image using JavaScript?
我的目标是在JavaScript中加载SVG图像,并将其作为图像和底层SVG XML提供。
我可以像这样加载图像...
var myImage = new Image();
myImage.src = "cat.svg";
现在,在我拥有图像之后,如何访问构成 SVG 图像的基础 XML?
我想出的唯一解决方案是通过ajax再次加载它:
$(myImage).one("load", function(){
$.ajax({
url : "cat.svg",
cache : true,
dataType : "xml"
}).fail(function( jqXHR, textStatus, errorThrown ) {
console.error("Ajax failure loading image.");
}).done(function( data, textStatus, jqXHR ){
console.log("Got the image's SVG XML:", $(data).find('svg'));
});
});
但我觉得可能有更好的方法可以做到这一点。
无法从Image
对象中提取图像源。
问题中包含的 AJAX 解决方案是获取源代码的唯一方法。
如果您只想加载一次图像,那么也许您可以先使用 AJAX 获取它,然后使用提取的 XML 来呈现图像(例如,作为内联 SVG 添加到文档中,或将源设置为 data:
或 Blob URL)。
据我所知,svg 一旦加载就会被破坏。因此,我建议,你的方式是唯一可能的。
我知道的所有库(snap.svg,svg.js等)只能与svg的解释代码一起使用。即使它会在一定程度上提高性能,它们也依赖于操纵解释的代码......所以我猜没有办法从解释的 SVG 中获取原始代码。
使用 jQuery,在 chrome 和 Firefox 上测试
$('#svgBase').html( '<circle cx="20" cy="20" r="10" stroke="black" stroke-width="2" fill="red"></circle> <circle cx="50" cy="20" r="10" stroke="black" stroke-width="2" fill="green"></circle>')
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<svg id="svgBase"></svg>
相关文章:
- 缩略图库的XML数据图像绑定
- 使用XML将头文本、段落文本和按钮和每个图像绑定
- 将普通数据转换为xml数据的图像滑块
- 如何在jQuerymobile中显示来自XML的图像
- ColdFusion中通过XML获取滑块图像
- 从我的Java Web服务以REST响应(xml)发送图像
- 是否可以使用 JavaScript 获取 SVG 图像的 XML
- 从 xml 文件中获取图像网址
- 如何加载带有图像链接的 XML 文件,以便在 2D JavaScript 数组中使用
- 如何限制xml文件中显示的12个图像,并自动为其他图像创建页面
- 尝试通过PHP通过XML请求下载图像文件
- 将base64中的图像发送到Web服务-'应用程序/八位字节流'不是预期的类型'text/xml
- 从iTunes播客XML提要获取图像
- 从Javascarpt/jquery上传图像和JSON/XML
- 如何在XML代码中将图像直接添加到SVG中
- XMLHttpRequest:以XML和图像作为有效负载的多部分/相关POST
- Regex从xml中提取图像
- 如何使用XML数据更改网站上的图像&jQuery
- InDesign启动脚本未从XML导入加载图像时出现问题
- 使用 javascript 从 xml 文件中加载一系列随机图像