在Firefox 12.0或更高版本中,.offset()
和.position()
在SVG(根)元素上调用时返回意外值。
结果值是“左”组件中最左边的子组件的x-coord和“top”组件中最顶级子组件的y-coord。
$(this.SvgObject).offset().left / $(this.SvgObject).offset().top
在firefox中返回非预期值。
但是当我得到父偏移量时,它会给出正确的值(即):
$(this.SvgObject).parent().offset().left
但这不是正确的方法。
请参阅this bug report。他们回复说:
“不幸的是,我们不打算在短期内修复与SVG相关的错误:”
如何在SVG中解决此问题?
答案 0 :(得分:1)
我遇到了同样的问题,我在开始绘制Raphael图之前创建了一个假边界,解决了这个问题。
// adding following rect just to set the boundary of svg element (firefox)
paper.rect(0,0,paperWidth,paperHeight,0).attr({stroke: "#fff"});
答案 1 :(得分:0)
您可以使用:
var svg = $(this.SvgObject),
po = svg.offsetParent().offset(),
left = po.left + parseInt(svg.css("left"), 10),
top = po.top + parseInt(svg.css("top"), 10);