2017-01-17 53 views
1

我有SVG是否可以使用snap.svg加载部分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文件和LOD它像f.select( “#G1” 加载)而只追加那部分os文件?

回答

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调用和代表装载部分Snap.parse SVG。

你可以实现自己的版本,解析XML并提取SVG的部分由Snap.parse()解析。

喜欢的东西:

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); 
    }); 
}; 
1

嗯,我找到解决方案。 我只取F对象获得SVG我需要的部分,然后将其追加像这样:

var g = f.node.childNodes[4].querySelector("#HERE"); 

和追加后和它的作品。

相关问题