2011-11-22 102 views
6

我試圖通過使用<canvas>ontouchstartontouchmove等觸摸事件原型化一個非常簡單的繪圖應用程序來加快HTML5的速度。桌面瀏覽器支持觸摸事件嗎?

這是顯示和工作正常的Android模擬器,我用鼠標點擊模擬觸摸事件。但是,在我的桌面瀏覽器(Safari 5.1.1,Windows 7上的Firefox 7)中運行時,它完全不起作用。

我認爲鼠標點擊事件會被解釋爲在仿真器中運行時的觸摸事件。

現在我想知道,如果桌面瀏覽器可能不支持觸摸事件。

回答

3

Firefox 6及以上版本支持觸摸事件。請參閱兼容性表here

MDN article on Touch Events

編輯:你用觸摸屏或鼠標測試?鼠標事件不會自動轉換爲觸摸事件。有關如何使用鼠標模擬觸摸事件,請參閱this post

+0

MDN文章鏈接到一個示例,但它不適用於當前版本的FF或Safari。 https://developer.mozilla.org/samples/domref/touchevents.html – Justin

+0

@Justin查看更新的答案。 – pradeek

+1

很確定只有firefox mobile 6+支持觸摸事件,而不是桌面的firefox(除非你使用moz-touch事件)。 –

0

ontouchstart將成爲webkit for iphones版本的一個附加組件。你可以測試它,但只能在模擬器上進行測試。

9

這實際上是相反的。移動瀏覽器將觸摸轉換爲鼠標事件以獲得傳統支持。如果需要在移動設備和桌面設備上工作,並且您不需要觸摸事件,則可以使用鼠標事件。否則,綁定觸摸和鼠標事件,並讓觸摸事件取消鼠標事件。這種方式在移動設備上的觸摸觸發和鼠標不會。在桌面上,觸摸不會觸發,鼠標將會觸發。

對於pilau,這裏是一個取消移動設備上的點擊事件的簡單示例。請注意,這個問題更多的是涉及拖拽的拖拽,這需要更多的代碼來檢測,但基本思想是一樣的,綁定你需要處理的事件。然後e.preventdefault()將停止移動瀏覽器模擬點擊類型事件。

$('#element').on('touchend click', function(e){ 

    // Do your onclick action now 

    // cancel the onclick firing 
    e.preventDefault(); 
}); 
+1

如果您可以發佈代碼片段展示您如何做到這一點,我會向您發送我甜蜜的愛! :) – pilau

+0

@pilau如果你使用jQuery,只需使用'event.preventDefault()'在你的事件處理函數,它將停止從模擬鼠標點擊事件的手機瀏覽器,我就把一個例子,我的主要職務爲你。 – Lee

+1

哦,就這麼簡單!非常感謝。 – pilau

相關問題