繁体   English   中英

在Safari中访问SVG子级

[英]Accessing SVG children in 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中是否存在另一种访问孩子的方式?

实际上,我前一阵子找到了解决方案,却忘记发布了。 如另一个答案中所述,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;过滤掉它们if (svgChildren[i].nodeType == 3) continue;

在Safari中,想读children在SVG Elmeent将始终返回undefined ,这是因为,可悲的是,不支持它。 尝试改用childNodes

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM