在使用交互式DOM元素執行單個頁面JavaScript應用程序時我發現「mouseover-mousemove-mousedown-mouseup-click
」順序發生在之後 「touchstart-touchmove-touchend
」事件序列。使用Javascript防止移動Safari/iPhone中的觸摸事件產生鼠標仿真事件(即,單擊)
我還發現,有可能防止由touchstart
活動期間做一個「event.preventDefault()
」發生的「mouse*-click
」事件,但只有然後,而不是在touchmove
和touchend
。這是一個奇怪的設計,因爲在touchstart
期間不可能知道用戶是否意圖拖動或輕掃,或者只是點擊/點擊該項目。
我最終設置了一個與時間戳綁定的「ignore_next_click」標誌,但這顯然不是很乾淨。
有沒有人知道這樣做的更好方法,還是我們錯過了什麼?
注意的是,雖然「點擊」可以被認定爲「touchstart-touchend
」序列(即沒有「touchmove
」),有一些事情,比如鍵盤輸入焦點,可適當click
事件時纔會發生。
我很感興趣,iPad的Safari瀏覽器的觸摸事件過於一部分,但它不是我清楚你想解決哪些具體問題。如果你仍然在處理這個問題,或者解決了這個問題,那麼請細心闡述一下? – Tim 2010-08-01 13:04:10
我希望能夠處理某些事件,如拖放,並且還能夠處理「點擊」事件。我必須將「單擊」事件作爲適當的「單擊」事件(而不是touchstart/touchend)來處理,因爲某些事情(例如鍵盤輸入焦點)可能只能在單擊事件處理程序中激活。 – 2010-10-01 06:47:14
這個問題非常討厭,也影響到Android。 – 2011-04-26 18:06:30