在Safari中访问SVG子项

时间:2015-02-16 10:03:28

标签: javascript svg safari

我使用ajax加载SVG文件并将SVG传递给javascript函数,如下所示:

var svg = $(xml).find('svg');
map.addSlopeLayer(svg[0]);

在函数内部,我访问SVG的子代:

var gs = svg.children;

这在Firefox和Chrome中运行良好,但是当我在Safari svg.children中尝试它时,未定义。

我是如何尝试访问孩子的,或者是否有其他方法可以在Safari中访问它们?

2 个答案:

答案 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