Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在Safari中访问SVG儿童_Javascript_Svg_Safari - Fatal编程技术网

Javascript 在Safari中访问SVG儿童

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中,尝试读取

我使用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 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过滤掉它们