簡體   English   中英

如何防止移動瀏覽器中的模擬鼠標事件?

[英]How to prevent simulated mouse events in mobile browsers?

移動瀏覽器模擬鼠標事件,以支持僅將處理程序附加到鼠標事件的網站。 但是,如果要實現兩個交互模型 - 一個用於鼠標事件,一個用於觸摸事件 - 那么防止瀏覽器模擬鼠標事件會很有幫助。

在iOS Safari上,這非常簡單 - 只需在touchend上運行preventDefault:

jQuery(document).on('touchend', function(e) {
  // Do some logic      
  e.preventDefault();
});

這很理智。 不幸的是,Android的默認瀏覽器和Dolfin都沒有使用這種技術取消鼠標模擬。 (當touchDefault在touchstart上運行時,Dolfin將取消mousedown - 但這不是很有幫助,因為你不知道手指將在touchstart上采取什么動作。)

有沒有其他方式有條件地,甚至沒有條件地阻止模擬鼠標事件發射?

[編輯]

為了更好地理解問題,我在以下網址開始了觸摸事件兼容性表: http//labs.cruncher.ch/touch-events-compatibility-table/

雖然有一些狡猾的方法來實現這一點,但我用兩種常見的做法來解決這種差異:

1)使用標志

在事件處理程序中設置布爾標志,例如mouseIsDownmouseIsMoving ,可以設置並檢查鼠標和觸摸事件。 如果用戶單擊鼠標,請將其作為鼠標事件接受。 然后,如果觸摸事件隨之發生,請忽略它。

2)只實施必要的東西

嗯,無論如何這是好習慣。 如果您不需要,請不要費心添加touchmovemousemove事件。 這將使維護代碼變得更加困難。 編輯:可能應該更具體:如果您需要更高級的事件跟蹤,請考慮重新考慮您的UI。

最后,不要依賴外部硬件配置列表,因為這些列表很少“完全”准確。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM