JavaScript 如何检测触摸屏设备

JavaScript 如何检测触摸屏设备

有时您可能在寻找一些功能以包含到您的Web应用程序中,这些功能只能在具有触摸屏的设备上可用。您可能需要在游戏应用程序或GPS和导航应用程序中为触摸屏用户引入更智能的控件时进行此检测。虽然有许多JavaScript库(如Modernizer、jQuery等)专门设计用于执行此类任务。

需要注意的是,设备支持触摸事件并不意味着它是专用的触摸屏设备。许多高端超极本都支持触摸。因此,为了获得更好的用户体验,您应该在检测触摸屏设备时考虑一些其他属性。

为了执行此检查,针对所有可能的浏览器,我们将使用以下三个属性:

  • ontouchstart: 处理触摸DOM元素后触发的事件处理程序。
  • maxTouchPoints: Navigator接口的只读属性,返回设备支持的最大同时触摸触摸点数。
  • msMaxTouchPoints: 与上面相同,只是在目标浏览器IE 10及以下使用厂商前缀“ms”。

语法:

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

示例: 如果检测到触摸屏设备,则显示此示例中的图像,否则将不显示图像。

<!DOCTYPE html>
<html>
 
<head>
    <title>
        Detect touch screen device 
        using JavaScript
    </title>
</head>
 
<body>
    <p>
        Detect touch screen device 
        using JavaScript
    </p>
     
    <p>
        If touch screen detected then display
        an image otherwise image will not
        display    
    </p>
     
    <div id="GFG"></div>
 
    <script type="text/javascript">
     
        function is_touch_enabled() {
            return ( 'ontouchstart' in window ) || 
                   ( navigator.maxTouchPoints > 0 ) ||
                   ( navigator.msMaxTouchPoints > 0 );
        }
     
        var src = 
"https://write.geeksforgeeks.org/wp-content/uploads/gfg-39.png"; 
     
        if( is_touch_enabled() ) {
            var img = "<img src=" + src + " height='100'/>";;
        }
        else {
            var img = "";
        }
     
        document.getElementById('GFG').innerHTML = img;
    </script>
</body>
 
</html>                    

输出结果:

  • 非触摸屏上的输出结果:

JavaScript 如何检测触摸屏设备

  • 触摸屏上的输出:

JavaScript 如何检测触摸屏设备

示例2: 在这个示例中,只有在设备具有触摸功能时,才能拖动一个 <div> 元素。

<!DOCTYPE html>
<html>
     
<head>
    <title>
        Detect touch screen device 
        using JavaScript
    </title>
     
    <link href=
"https://code.jquery.com/ui/1.10.4/themes/ui-lightness/jquery-ui.css"
    rel="stylesheet"> 
     
    <script src="https://code.jquery.com/jquery-1.10.2.js"></script> 
     
    <script src="https://code.jquery.com/ui/1.12.1/jquery-ui.min.js">
    </script>
     
    <script src=
"https://cdnjs.cloudflare.com/ajax/libs/jqueryui-touch-punch/0.2.3/
jquery.ui.touch-punch.min.js">
    </script> 
 
    <style>
        #draggable {
            width: 150px;
            height: 50px;
            text-align: center;
        }
    </style>
     
    <script>
        function is_touch_enabled() {
            return ( 'ontouchstart' in window ) || 
                   ( navigator.maxTouchPoints > 0 ) ||
                   ( navigator.msMaxTouchPoints > 0 );
        }
         
        if( is_touch_enabled() ) {
            (function() { 
                ( "#draggable" ).draggable();
            });
        }
    </script>
</head>
 
<body>
    <div id="draggable" class="ui-widget-content"> 
        <p>Draggable Elements!</p> 
    </div> 
</body>
 
</html>                    

输出:

  • 非触摸屏上的输出:

JavaScript 如何检测触摸屏设备

  • 触摸屏上的输出:

JavaScript 如何检测触摸屏设备

JavaScript 如何检测触摸屏设备

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程