2

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

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

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

在 Firefox 中返回非预期值。

但是当我得到父偏移量时,它给出了正确的值(即):

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

但这不是正确的方法。

请参阅此错误报告。他们回答说:

“不幸的是,我们不打算很快修复与 SVG 相关的错误:”

如何在 SVG 中解决这个问题?

4

2 回答 2

1

我遇到了同样的问题,我只是在开始绘制拉斐尔图之前创建了一个假边界,从而解决了这个问题。

// adding following rect just to set the boundary of svg element (firefox)
paper.rect(0,0,paperWidth,paperHeight,0).attr({stroke: "#fff"});
于 2013-03-29T12:26:07.197 回答
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);
于 2013-12-18T16:17:10.677 回答