我有svg
<svg><g id="g1">polygons here...</g><g id="g2">polygons here...</g></svg>
现在我正在使用snap.svg加载
<svg id="svg" width="1024"></svg>
var s = Snap("#svg");
s.attr({ viewBox: "0 0 1024 3250" });
Snap.load("URLHERE", function(f){
s.append(f);
}) ;
是否可以只使用部分os文件并将其作为 f.select(“#g1”)而不仅仅附加那部分os文件?
答案 0 :(得分:1)
我找到了解决方案。 我只是把f对象获取我需要的svg的一部分,然后像这样追加它:
var g = f.node.childNodes[4].querySelector("#HERE");
并在追加并且有效。
答案 1 :(得分:0)
查看Snap.load
的实施:
Snap.load = function (url, callback, scope) {
Snap.ajax(url, function (req) {
var f = Snap.parse(req.responseText);
scope ? callback.call(scope, f) : callback(f);
});
};
使用ajax调用'加载'svg,并将加载部分委托给Snap.parse
。
您可以实现自己的版本,该版本解析xml并提取要由Snap.parse()
解析的svg部分。
类似的东西:
myLoad = function (url, callback, scope, WHAT_TO_LOAD) {
Snap.ajax(url, function (req) {
var svgDataToParse = req.responseText;
var result = "";
// DO SOMETHING WITH svgDataToParse
var f = Snap.parse(result);
scope ? callback.call(scope, f) : callback(f);
});
};