2012-01-20 20 views
10

Questo è l'opposto di rilevare il supporto touch nei browser. Come posso rilevare se un browser ha il supporto per il mouse? Chrome per desktop dovrebbe restituire true, Safari per iPad dovrebbe restituire false.Rilevamento del supporto del mouse

Sto pensando che i browser mobili restituiranno falsi positivi per i soliti trucchi di rilevamento.

risposta

0

In teoria, dovresti essere in grado di testare se ha il supporto al tocco, quindi prendere il contrario. Potrei sbagliarmi, ma per quanto ne so, i browser che non supportano gli eventi di tocco supporteranno gli eventi del mouse e viceversa, poiché la differenza tra questi due è di solito un browser mobile o normale.

MODIFICA: Un'altra possibilità potrebbe essere l'utilizzo di onmousemove nello stesso modo in cui si utilizza onuchmove per rilevare la capacità di tocco. Tuttavia, non sono sicuro che i browser per dispositivi mobili si registrino sumousemove.

+1

Che dire di qualcuno che utilizza un dispositivo all-in-one con touch screen e mouse? – qwertymk

+0

Suppongo che il tuo sito non funzionerebbe nel modo in cui lo volevi davvero, ma se questo garantisce una correzione dipende da quanto sono comuni quei browser, da cosa sta facendo con esso e se le persone su quei dispositivi vorranno usare il suo luogo. Questa è una soluzione possibile. – CSturgess

+1

Questo non funzionerà. Desktop Firefox restituisce true per il rilevamento del tocco. Usano lo stesso code-base su desktop e mobile. – Matthew

0

Questo metodo controlla se l'oggetto Touch esiste senza utilizzare eventi. In caso contrario, hai un mouse. Penso che sia il modo più semplice per farlo. Restituirà false sul dispositivo raro che ha touch e un mouse, quindi dovrai decidere se ciò influisce sul tuo design o meno.

function hasTouch() { 
    return (typeof Touch == 'object'); 
}; 

Demo: http://jsfiddle.net/ThinkingStiff/ux89v/

Script:

function hasTouch() { 
    return (typeof Touch == 'object'); 
}; 

document.getElementById('touch').textContent = 'Mouse: ' + !hasTouch(); 

HTML:

<div id="touch"></div> 
+1

I dispositivi con mouse e touch stanno diventando sempre meno rari nei prossimi mesi/anni con gli schermi tattili che iniziano ad apparire su laptop e desktop. Non vedo perché Touch non sia necessariamente un oggetto su questi dispositivi? –

+0

@Jonhoo Sì esattamente. Stavo solo eseguendo il debug di uno strano comportamento nella mia applicazione web per progetti di hobby, e ho notato che il mio codice Javascript crede che il mio portatile da 17 "con touch screen sia ... un telefono cellulare o qualcosa del genere. Dal momento che ha un touch screen. – KajMagnus

1

nei browser che utilizzano gli eventi di tocco:

var clickEvent = ('ontouchstart' in window ? 'touchend' : 'click'); significa in pratica "se il dispositivo supporta il tocco, ascolta solo il touch-end e non clicca" - che, su un dispositivo multi-input, interrompe immediatamente qualsiasi interazione tramite mouse, trackpad o tastiera.

Questo articolo discute la vostra domanda in particolari here

Un altro articolo perspicace here

Ma, tutto dipende da ciò che si vuole raggiungere.

Problemi correlati