我在iPhone上玩touchstart和touchend事件。我構建了一個帶有div的示例頁面,如果您觸摸它並滾動頁面,它應該返回開始和結束位置的y座標。jQuery(Swipe vs. Touch)pageX和pageY繼續返回0
jQuery的:
var touchStartPos;
$('.theDiv')
.bind('touchstart', function(e){
touchStartPos = e.pageY;
})
.bind('touchend', function(e){
alert(touchStartPos + ' | ' + e.pageY)
})
當我打開我的iPhone上該網頁,然而,警報不斷報告這兩個值爲零。有人看到我有什麼不對嗎?
UPDATE:
我碰到這段代碼在jQuery Mobile的項目絆倒:https://github.com/jquery/jquery-mobile/issues/734
註釋它從它伸出:
// (in iOS event.pageX and event.pageY are always 0)
這並不是說爲什麼就是這樣,但至少我發現有人看到同樣的事情。將挖掘該頁面上的示例代碼,以查看解決方案是否存在。
UPDATE II:
好了,通過上面的鏈接示例代碼看後,看起來這將返回的實際值:
e.originalEvent.touches[0].pageY
美中不足的是,我現在意識到,這不是我需要。它會返回我將該事件附加到與HTML文檔相關的對象內的對象內的區域的Y偏移量,而不是瀏覽器窗口。
我的目標是找出屏幕上觸摸開始的位置以及結束位置......然後比較這些值。如果它們有點不同,那麼我們就會執行滑動操作......而不是觸摸。
UPDATE III:
我也發現引用這些例子:
e.originalEvent.touches[0].pageX
event.targetTouches[0].pageY
雖然我似乎無法得到那些要麼工作。兩者都返回未定義的錯誤。
UPDATE IV:
它看起來像一個解決方案是在文檔本身到軌道偏移()。我可以將一個touchend事件應用到文檔中,然後檢查它是否偏移。
問題在於,我的touchend事件將首先觸發我的頁面上的元素,然後它會在文檔上觸發它(冒泡)。所以我不能真正確定它是否是觸摸或滑動之前我需要找出對象touchend事件做什麼。
還在琢磨這一個...
怪異,不knwo關於手機,但工作正常點擊http://jsfiddle.net/nH2PU/ – Sinetheta
我希望這是不會有這麼多的一個難倒的的。 ;) –
Android中出現同樣的情況(2.2.2) – NoBugs