我使用ajax加载SVG文件并将SVG传递给javascript函数,如下所示:
var svg = $(xml).find('svg');
map.addSlopeLayer(svg[0]);
在函数内部,我访问SVG的子代:
var gs = svg.children;
这在Firefox和Chrome中运行良好,但是当我在Safari svg.children中尝试它时,未定义。
我是如何尝试访问孩子的,或者是否有其他方法可以在Safari中访问它们?
答案 0 :(得分:2)
我实际上在不久前找到了这个解决方案而忘了发布它。正如在另一个答案中提到的,Safari根本不支持SVG Elements的children
属性,我用来解决此问题的代码如下:
var svgChildren = svg.children || svg.childNodes;
for (var i=0; i < svgChildren.length; i++){
if (svgChildren[i].nodeType == 3) continue;
//do something with the svg elements
}
由于childNodes
也会返回文本节点,因此我使用if (svgChildren[i].nodeType == 3) continue;
答案 1 :(得分:0)
在Safari中,尝试阅读SVG元素上的children
将始终返回undefined
,这是因为遗憾的是,它不受支持。请尝试使用childNodes
。