NOVINKA - Online rekvalifikační kurz Java programátor. Oblíbená a studenty ověřená rekvalifikace - nyní i online.
NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!
Avatar

Člen
Avatar
:30.7.2016 12:09

Hoj,
existuje nějaká metoda, jak v JS rozpoznat, zda má zařízení dotykový displej, případně jestli je právě používán? Dostal se mi doruky 2v1 a ovládat na něm dotykem něco přizpůsobeného pro myš a klávesnici je fakt mor. Problém je v tom, že user agent se tváří jako desktop, rozlišení obrazovky je jako normální ntb a jako třešnička na dortu se dá klávesnice s touchpadem připojit/odpojit. Existuje nějaká cesta, jak tohle všechno vyřešit a dozvědět se, zda je nebo není používáno dotykové ovládání?

 
Odpovědět
30.7.2016 12:09
Avatar
Odpovídá na
Neaktivní uživatel:30.7.2016 12:59

Nejsem v JS nějak zběhlý, ale jediné co zjistíš je to, jestli má zařízení dotykový displej.

Nahoru Odpovědět
30.7.2016 12:59
Neaktivní uživatelský účet
Avatar

Člen
Avatar
Odpovídá na Neaktivní uživatel
:30.7.2016 13:00

I to mi postačí. Pokud ho uživatel nepoužívá, nemá si takové zařízení kupovat. :D

 
Nahoru Odpovědět
30.7.2016 13:00
Avatar
Odpovídá na
Neaktivní uživatel:30.7.2016 13:03
if (('ontouchstart' in document) && (navigator.maxTouchPoints || navigator.msMaxTouchPoints)) {
    // Má dotykový displej
}
Nahoru Odpovědět
30.7.2016 13:03
Neaktivní uživatelský účet
Avatar

Člen
Avatar
Odpovídá na Neaktivní uživatel
:30.7.2016 13:04

To jsem zkoušel, bohužel to na tom mém 2v1 v MS Edge nefunguje.

 
Nahoru Odpovědět
30.7.2016 13:04
Avatar
Odpovídá na
Neaktivní uživatel:30.7.2016 13:05

Co Edge říká na msMaxTouchPoints?

Nahoru Odpovědět
30.7.2016 13:05
Neaktivní uživatelský účet
Avatar

Člen
Avatar
Odpovídá na Neaktivní uživatel
:30.7.2016 13:07

Že nic takovýho nezná. :D undefined
Ale na verzi bez prefixu už reaguje, prej 10. Problém je v tom eventu ontouchstart, ten nezná. Nebo se tak aspoň tváří.

Editováno 30.7.2016 13:08
 
Nahoru Odpovědět
30.7.2016 13:07
Avatar

Člen
Avatar
:30.7.2016 13:12

Zkusím

if (('ontouchstart' in document) || (navigator.maxTouchPoints || navigator.msMaxTouchPoints)) {
//touchscreen true
}

Vyzkouším na co největším počtu zařízení a uvidíme...

 
Nahoru Odpovědět
30.7.2016 13:12
Avatar
Odpovídá na
Neaktivní uživatel:30.7.2016 13:12

No, prý že touch API se musí v Edge zapnout.

Nahoru Odpovědět
30.7.2016 13:12
Neaktivní uživatelský účet
Avatar
Odpovídá na
Neaktivní uživatel:30.7.2016 13:12

Toto ne. Některé prohlížeče mají ontouchstart i na desktopu (nedotykovém).

Nahoru Odpovědět
30.7.2016 13:12
Neaktivní uživatelský účet
Avatar

Člen
Avatar
Odpovídá na Neaktivní uživatel
:30.7.2016 13:14

Zkouším všechny možný prohlížeče, zatím jsem na špatný výsledek nenarazil.

 
Nahoru Odpovědět
30.7.2016 13:14
Avatar

Člen
Avatar
:30.7.2016 13:18

Zapínat Touch API je sice fajn, ale to user dělat nebude. Zatím se ta moje metoda jeví jako OK, kdyžtak bych odstranil ten event a nechal jen maxtouchpoints.

 
Nahoru Odpovědět
30.7.2016 13:18
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 12 zpráv z 12.