[英]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.