2012-05-18 5 views
0

Я пытаюсь выяснить, если агент пользователя является сенсорным устройством, и если я хочу, чтобы загрузить addEventListener ...EventListener для сенсорных устройств

if((navigator.userAgent.match(/iPhone/i)) || 
    (navigator.userAgent.match(/iPad/i)) { 
    document.addEventListener("touchstart", function() {},false); 
}) 

Кроме того, как я могу обнаружить Android устройства и, возможно, другие сенсорные устройства?

+1

Вот ответ .. if (window.Touch) {/ * JavaScript для вашего сенсорного интерфейса * /} – Josh

+1

Браузер нюхает плохо, никогда его не использовать, всегда есть альтернатива. Там много сенсорных устройств, которые не являются iPhones или iPads, а Android работает на самых разных устройствах, которые могут поддерживать или не поддерживать сенсорные события. А потом есть Windows Mobile (или что-то еще в последнее время). – RobG

+0

Не забудьте события 'MSPointer'. – Sampson

ответ

0

Простой скрипта я некоторое время назад, чтобы проверить на сенсорное событие:

var hasTouch = (function(){ 
    if (document && document.createEvent) { 
    try { 
     document.createEvent('GestureEvent'); 
     document.createEvent('TouchEvent'); 
     return true; 
    } catch (e) { 
     return false; 
    } 
    } 
})(); 

Я не использовал его в течение некоторого времени, так что может быть более эффективными способами, но выше по-прежнему работает.

Вы также можете попробовать статью Kangax на Detecting event support without browser sniffing, что может пойти что-то вроде:

function isTouchEventSupported(eventName) { 
    var el = document.createElement('div'); 
    eventName = 'on' + eventName; 
    var isSupported = (eventName in el); 

    if (!isSupported) { 
     el.setAttribute(eventName, 'return;'); 
     isSupported = typeof el[eventName] == 'function'; 
    } 
    el = null; 
    return isSupported; 
    } 

    alert(isTouchEventSupported('touchstart')); // false in IE 8 
Смежные вопросы