Javascript 在Safari中访问SVG儿童
我使用ajax加载SVG文件,并将SVG传递给javascript函数,如下所示:Javascript 在Safari中访问SVG儿童,javascript,svg,safari,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中,我尝试访问子对象的方式是否有错误,或者是否有其他方法访问它们?在Safari中,尝试读取
var svg = $(xml).find('svg');
map.addSlopeLayer(svg[0]);
在函数中,我访问SVG的子级:
var gs = svg.children;
这在Firefox和Chrome中运行良好,但当我在Safari svg.children中尝试时,它是未定义的
在Safari中,我尝试访问子对象的方式是否有错误,或者是否有其他方法访问它们?在Safari中,尝试读取SVG Elmeent上的
子对象将始终返回未定义的,这是因为遗憾的是,它不受支持。尝试改用childNodes
。我不久前找到了解决方案,但忘了发布它。正如在另一个答案中提到的,Safari根本不支持SVG元素的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
}
var svgChildren=svg.children | | svg.childNodes;
for(变量i=0;i
由于childNodes
也返回文本节点,因此我使用if(svgChildren[I].nodeType==3)continue过滤掉它们代码>