2013-03-26 83 views
2

在Firefox 12.0或更高版本中,当在SVG(根)元素上调用时,.offset().position()会返回意外的值。Firefox中的SVG偏移问题

结果值是“左”组件的最左边孩子的x坐标和“顶”组件的最顶层孩子的y坐标。

$(this.SvgObject).offset().left/$(this.SvgObject).offset().top 

在firefox中返回un预期值。

但是当我获取父抵消它给正确的值(即):

$(this.SvgObject).parent().offset().left 

但不这样做正确的方式。请参阅this bug report。他们答道:

“不幸的是我们没有关于尽快SVG任何时候打算修正错误:”

我怎样才能在SVG解决这个问题?

+0

如果根svg元素具有视框那么它可能是你的预期是不正确的,并在Firefox或jQuery的不是一个错误。您没有向我们展示SVG,也没有告诉我们您期望的数字。 – 2013-03-26 09:25:22

+0

Robert> jquery最轻松的期望是在所有浏览器中都有相同的结果(错误或正确),但显然不是这种情况。 Chrome和FF返回不同的东西。 – nraynaud 2014-03-15 02:09:20

回答

1

我正面临同样的问题,我刚开始绘制拉斐尔图之前创建了一个假边界,解决了这个问题。

// adding following rect just to set the boundary of svg element (firefox) 
paper.rect(0,0,paperWidth,paperHeight,0).attr({stroke: "#fff"}); 
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);