在jQueryUI选项卡中,QuirksMode鼠标位置对于SVG不正确?

时间:2012-01-06 15:55:33

标签: svg mouseover jquery-ui-tabs

我刚注意到一些奇怪的事情。如果我绘制SVG形状,那么当我使用返回鼠标位置的标准方法时,我提供的坐标作为形状的x和y属性与该形状上的鼠标事件返回的坐标不匹配。

例如,如果我按如下方式绘制矩形:

shape = svgDocument.createElementNS(svgNS, "rect");
shape.setAttributeNS(null, "x", rect_x);
shape.setAttributeNS(null, "y", rect_y);
...
shape.addEventListener("mouseover", etc);

在事件例程中,我使用QuirksMode算法(“{3}}处的”用于检测鼠标坐标的“正确脚本”获取鼠标位置。对于Y坐标,我必须按如下方式更正QuirksMode值,以便进入'rect_y':

F/F 8  subtract 105
Webkit subtract 103
IE9    subtract 104
Opera  subtract 103

同样令人好奇的是,Webkit和IE9都提供了evt.offsetY,并将其设置为“正确”位置(完全等于'rect_y')。 FF使offsetY未定义,Opera将其设置为1.

我怀疑问题是这是在jQueryUI选项卡中,虽然我尚未完成此操作。谁见过这个?有什么想法吗?

1 个答案:

答案 0 :(得分:0)

在SVG中,您将使用getScreenCTM方法转换坐标而不是offsetX或offsetY等。这里有一个示例:http://www.carto.net/svg/eventhandling/搜索将clientX转换为viewBox坐标部分。这有点复杂,因为它试图处理没有getScreenCTM方法的ASA3之类的旧UAs。