2012-01-06 76 views
0

我刚刚注意到一些奇怪的东西。如果我绘制SVG形状,则在使用返回鼠标位置的标准方法时,我提供的作为形状的x和y属性的坐标与该形状上的鼠标事件返回的坐标不匹配。QuirksMode在jQueryUI选项卡中的SVG鼠标位置不正确?

例如,如果我绘制一个矩形,如下所示:

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

,我得到使用怪异模式算法(以下简称“用于检测所述鼠标坐标正确的脚本”鼠标位置,在http://www.quirksmode.org/js/events_properties.html)。对于Y坐标,我必须纠正怪异模式值如下,为了得到“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选项卡中,尽管我还没有完成此工作。任何人看到这个?有什么想法吗?

回答

0

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