在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元素的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;
将其过滤掉
在Safari中,尝试在SVG Elmeent上读取children
将始终返回undefined
,因为遗憾的是,它不受支持。请尝试使用childNodes
。
相关文章:
- D3在一个调用中绘制不同的SVG形状,没有可见性
- 如何使用javascript从主svg对象动态创建svg视图框
- 如何更改<svg>标记为<img>用js标记
- 锚点元素不't使用svg时,请打开EDGE上的href
- 带有填充属性的SVG矩形显示在包含元素的上方插入框阴影
- 使用onclick绘制SVG路径
- SVG/JavaScript:尝试选择和更改多边形点
- 顺时针旋转Svg元件
- 禁用SVG拖动
- 在select元素中显示highchart dashstyle(svg)
- 在D3.js中,有没有任何方法可以将x和y方向上的滚动事件绑定到平移svg
- 缩放Raphael/SVG容器以适应所有内容
- JavaScript-动态SVG-onload属性-未触发事件
- 设置动画时,SVG/Raphael大圆圈会变形
- 使用SVG和JavaScript创建波浪动画
- Canvas+svg路径动画,在路径中的特定点暂停一段时间,然后继续
- D3.js生成有效的SVG,但不显示任何内容
- SVG xml to image
- 如何翻译SVG及其所有子项
- 在Safari中访问SVG子项