更新2021
#要看舊答案:請查看歷史記錄。我決定從零開始,因為在帖子中保留歷史記錄時變得難以控制。
我的原始答案說可以使用與Modernizr使用的相同函數,但現在已無效,因為他們在此PR中刪除了“touchevents”測試:https://github.com/Modernizr/Modernizr/ pull/2432,因為這是一個容易造成混淆的主題。
話雖如此,這應該是一種相當好的檢測瀏覽器是否具有「觸控功能」的方法:
function isTouchDevice() { return (('ontouchstart' in window) || (navigator.maxTouchPoints > 0) || (navigator.msMaxTouchPoints > 0)); }
但對於更高級的用例,比我聰明得多的人已經寫過關於這個主題的文章,我建議閱讀這些文章:
更新:在整個特性偵測到庫引入專案之前,請先閱讀下方的blmstr的答案,偵測實際觸控支援更為複雜,Modernizr只涵蓋了基本用例。
Modernizr是一種在任何網站上進行各種特性偵測的輕量級方法。
它只是為每個特性在html元素中添加類別。
然後您可以在CSS和JS中輕鬆地針對這些特性進行定位。例如:
html.touch div { width: 480px; } html.no-touch div { width: auto; }
以及JavaScript(jQuery範例):
$('html.touch #popup').hide();
更新2021
#要看舊答案:請查看歷史記錄。我決定從零開始,因為在帖子中保留歷史記錄時變得難以控制。
我的原始答案說可以使用與Modernizr使用的相同函數,但現在已無效,因為他們在此PR中刪除了“touchevents”測試:https://github.com/Modernizr/Modernizr/ pull/2432,因為這是一個容易造成混淆的主題。
話雖如此,這應該是一種相當好的檢測瀏覽器是否具有「觸控功能」的方法:
但對於更高級的用例,比我聰明得多的人已經寫過關於這個主題的文章,我建議閱讀這些文章:
更新:在整個特性偵測到庫引入專案之前,請先閱讀下方的blmstr的答案,偵測實際觸控支援更為複雜,Modernizr只涵蓋了基本用例。
Modernizr是一種在任何網站上進行各種特性偵測的輕量級方法。
它只是為每個特性在html元素中添加類別。
然後您可以在CSS和JS中輕鬆地針對這些特性進行定位。例如:
以及JavaScript(jQuery範例):