我開始使用觸摸事件了一段時間了,但我偶然發現了一個相當大的問題。到現在爲止,我檢查了是否支持觸摸功能,並基於此選擇了應用選擇性事件。像這樣:檢測瀏覽器的功能和選擇性事件的鼠標和觸摸
if(document.ontouchmove === undefined){
//apply mouse events
}else{
//apply touch events
}
但是,我的腳本在我的電腦上停止了Chrome5(目前是測試版)的工作。我研究了一下,正如我預期的那樣,在Chrome5中(與舊的Chrome,Firefox,IE等相反)document.ontouchmove
不再是undefined
,而是null
。
起初我想提交一個錯誤報告,但後來我意識到:有些設備同時具有鼠標和觸摸功能,所以這可能很自然,也許Chrome現在定義了它,因爲我的操作系統可能支持這兩種類型的事件。
所以解決方案看起來很簡單:應用BOTH事件類型。對?
那麼現在的問題發生在手機上。爲了向後兼容並支持僅使用鼠標事件的腳本,移動瀏覽器可能會嘗試觸發它們(觸摸)。因此,隨着鼠標和觸摸事件的設置,每次可能會調用某個處理程序兩次。
解決這個問題的方法是什麼?有沒有更好的方法來檢查和應用選擇性事件,還是我必須忽略瀏覽器有時觸發觸摸和鼠標事件時可能發生的問題?
我無法測試,但會在觸摸事件中返回false取消其默認行爲(觸發向後兼容的鼠標事件?) – gnarf 2010-06-18 13:19:31