我需要加载svg文件,将其更改(旋转并更改某些路径的颜色),然后将其显示在网页上,而无需任何外部库,只需使用普通JS。我试图从MDN这个代码,但不知道如何访问一个SVG的对象来操作SVG元素:动态加载svg,将其更改并插入到文档中
window.onload=run;
function run()
{
loadSvg("/img/dgt.svg");
}
function loadSvg(url)
{
var req=new XMLHttpRequest();
req.onreadystatechange=function()
{ if(req.readyState == 4)
{ if(req.status == 200)
{ var res=req.responseText;
draw(res);
}
else
{ console.log("URL "+url+" not available");
}
}
}
req.open("POST", url, true);
req.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
req.send();
}
function draw(svgData)
{
var c=document.getElementById("ctr");
var ctx=c.getContext("2d");
var DOMURL=window.URL || window.webkitURL || window;
var img=new Image();
var svg=new Blob([svgData], {type: "image/svg+xml;charset=utf-8"});
var url=DOMURL.createObjectURL(svg);
img.onload=function()
{
ctx.drawImage(img, 0, 0);
DOMURL.revokeObjectURL(url);
}
img.src=url;
}
所以,我想达到的目标: 1)负载SWG作为一个字符串并转换它到SVG元素,或者只是将其作为SVG元素加载 2)做一些改变,特别是旋转和填充/颜色改变 3)在网页上绘制SVG,或者在画布上或者将其附加为图像/ swg
怎么办? 谢谢
它以哪种方式失败? yor调试器显示什么? –
没有。它只是没有任何错误地画任何东西。我会尽力使小提琴现在 – BbIKTOP
单步调试器不能透露任何东西。绘画是否被调用? onreadystatechange函数是否被调用等 –