【发布时间】:2014-09-19 12:27:52
【问题描述】:
在这段代码中,我试图将一个 svg 文件加载到快照纸中,然后将其转换为一个组:
replacing <svg with <g and </svg> with </g> ?
请问我该如何解决这个问题?
var s1 = Snap('#svg1');
Snap.load( "https://dl.dropboxusercontent.com/u/140225334/bicycle.svg", function( frag ) {
var maing = s1.g();
maing.append(frag);
maing.attr({id: 'maing' });
// city_name=city_name.replace(/ /gi,'_');
var maing = maing.replace("<svg", "<maing").replace("</svg>", "</maing>"); // how this can be fixed to work?!
编辑:@dystroy,你的意思是这样的吗?:
var s1 = Snap('#svg1');
Snap.ajax("https://dl.dropboxusercontent.com/u/140225334/bike2.svg", function(request)
{
var svg = Snap(request.responseXML.documentElement);
var maing = svg.selectAll("svg>*");//you can select any elements.
s1.append(maing);
maing.attr({id: 'maing' });
} );
编辑:@dystroy,如果我这样做,一些 svg 样式将不会被复制:
请检查这两个有何不同:
将 svg 节点复制到 g:
对
原始 svg 文件:
【问题讨论】:
-
你使用 raphael 和 snap 吗?
-
您应该进行 DOM 操作而不是文本操作:创建 g 节点并将 svg 节点的内容附加到它们。
-
无论如何替换函数只替换第一次出现。
-
谢谢dystroy。你能检查我的编辑,看看这是不是你的意思?
-
谢谢 Gena,每个 svg 只会出现一次。所以如果它有效,那对我来说很好。
标签: javascript svg raphael snap.svg