2017-01-17 54 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"); 

和追加後和它的作品。

相關問題