爲了遵循最佳實踐,我們嘗試根據您使用的設備使用正確的JavaScript/jQuery事件。例如,我們正在構建一個移動網站,其中包含一個標記,其中包含onclick或touch事件。在iPhone的情況下,我們想使用「touchstart」事件。我們希望測試他們的設備是否支持「touchstart」,然後將該處理程序綁定到該對象。如果沒有,那麼我們將綁定「onclick」。如何使用JS/jQuery檢查瀏覽器是否支持touchstart?
這樣做的最好方法是什麼?
爲了遵循最佳實踐,我們嘗試根據您使用的設備使用正確的JavaScript/jQuery事件。例如,我們正在構建一個移動網站,其中包含一個標記,其中包含onclick或touch事件。在iPhone的情況下,我們想使用「touchstart」事件。我們希望測試他們的設備是否支持「touchstart」,然後將該處理程序綁定到該對象。如果沒有,那麼我們將綁定「onclick」。如何使用JS/jQuery檢查瀏覽器是否支持touchstart?
這樣做的最好方法是什麼?
如果該事件由支持您可以檢測:
if ('ontouchstart' in document.documentElement) {
//...
}
給看看這篇文章:
發表那裏isEventSupported
功能,纔是真的好在檢測各種各樣的事件時,它是跨瀏覽器的。
您可以檢查是否typeof document.body.ontouchstart == "undefined"
回落到正常的DOM事件
我做了充分的筆畫演示,在每一個瀏覽器這個問題的解決方案的完整源代碼的工作:Detect touch screen devices in Javascript。
使用此代碼來檢測設備是否支持觸摸。
也可在Windows 8 IE10它使用的不是「touchmove」
var supportsTouch = false;
if ('ontouchstart' in window) {
//iOS & android
supportsTouch = true;
} else if(window.navigator.msPointerEnabled) {
// Windows
// To test for touch capable hardware
if(navigator.msMaxTouchPoints) {
supportsTouch = true;
}
}
爲什麼不把它簡化爲單行? ''var supportsTouch =('ontouchstart'in window || window.navigator.msPointerEnabled)'' – 2017-01-10 12:35:38
不幸的是,這對於HP筆記本電腦(不帶觸摸屏)的Windows 10上的ie 11無效。它錯誤地說supportsTouch = true。但是當我將某些東西綁定到「touchstart」時,它永遠不會被執行。任何方式在這個? – 2017-02-08 21:53:13
這是錯的。指針API不僅適用於觸摸設備。它適用於每個幾乎每個輸入設備。 – Nilpo 2018-02-18 04:02:09
我有點動心+1這一點,但我知道,Firefox將返回'FALSE'這裏「MSPointerDown」事件錯誤的原因。對於以這種方式檢查的所有事件,Firefox都會返回false(我知道,這是Fx很糟糕的罕見情況之一)。文章確實進入了,所以你得到你的+1 ;-) – 2010-05-26 19:26:04
偉大的資源。感謝您的快速幫助! – Alex 2010-05-26 20:47:35
這隻會檢測**瀏覽器**是否支持觸摸事件,並不能確定**設備**是否支持它們。在非觸控設備上使用Chrome進行試用。 – RobG 2012-08-14 04:13:34