搜尋

首頁  >  問答  >  主體

JavaScript技巧:如何有效偵測觸控螢幕裝置?

<p>我寫了一個適用於桌面和行動裝置的jQuery插件。我想知道是否有一種方法可以使用JavaScript來偵測裝置是否具有觸控螢幕功能。我正在使用jquery-mobile.js來檢測觸控螢幕事件,並且它在iOS、Android等裝置上都可以工作,但我還想根據用戶的裝置是否具有觸控螢幕編寫條件語句。 </p> <p>這是可能的嗎? </p>
P粉877719694P粉877719694467 天前668

全部回覆(2)我來回復

  • P粉135292805

    P粉1352928052023-08-21 14:20:14

    更新2021

    #要看舊答案:請查看歷史記錄。我決定從零開始,因為在帖子中保留歷史記錄時變得難以控制。

    我的原始答案說可以使用與Modernizr使用的相同函數,但現在已無效,因為他們在此PR中刪除了“touchevents”測試:https://github.com/Modernizr/Modernizr/ pull/2432,因為這是一個容易造成混淆的主題。

    話雖如此,這應該是一種相當好的檢測瀏覽器是否具有「觸控功能」的方法:

    function isTouchDevice() {
      return (('ontouchstart' in window) ||
         (navigator.maxTouchPoints > 0) ||
         (navigator.msMaxTouchPoints > 0));
    }
    

    但對於更高級的用例,比我聰明得多的人已經寫過關於這個主題的文章,我建議閱讀這些文章:

    回覆
    0
  • P粉321584263

    P粉3215842632023-08-21 12:24:58

    更新:在整個特性偵測到庫引入專案之前,請先閱讀下方的blmstr的答案,偵測實際觸控支援更為複雜,Modernizr只涵蓋了基本用例。

    Modernizr是一種在任何網站上進行各種特性偵測的輕量級方法。

    它只是為每個特性在html元素中添加類別。

    然後您可以在CSS和JS中輕鬆地針對這些特性進行定位。例如:

    html.touch div {
        width: 480px;
    }
    
    html.no-touch div {
        width: auto;
    }

    以及JavaScript(jQuery範例):

    $('html.touch #popup').hide();

    回覆
    0
  • 取消回覆