我正在嘗試在使用Javascript的SVG元素上實現拖/移動作。我使用的事件處理程序,如這樣的:evt.offsetX在Safari上返回undefined
function handleMouseDown(evt) {
currentX = evt.offsetX;
currentY = evt.offsetY;
dX = currentX - Number($(evt.srcElement).attr("x"));
dY = currentY - Number($(evt.srcElement).attr("y"));
isDragging = true;
$info.html("mousedown at " + currentX + ", " + currentY); //feedback for debugging
}
請注意,我已經有代碼要麼鼠標按下或touchstart指向handleMouseDown,取決於它是否是觸摸設備或沒有。
在我的桌面上,該代碼在IE9,Google和Safari上運行良好。然而,在iPad上,在touchstart上,反饋顯示「未定義的未定義的mousedown」。如果我用.pageX和.pageY替換掉.offsetX和.offsetY,那麼我會得到實際的座標。所以看起來Safari Mobile不處理.offsetX和.offsetY,但它處理.pageX和.pageY。
我知道我可以使用源元素position.left屬性來計算pageX中的.offsetX,但如果可能,我想避免這種情況。所以我的問題是:我的代碼或方法有什麼問題,或者.offsetX沒有在Safari Mobile中處理。
任何幫助非常感謝!
任何分辨率? – nycynik 2012-09-29 18:18:40