2012-01-06 77 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。

相關問題