É possível reconhecer eventos de toque no navegador Safari do iPad usando o jQuery?
Eu usei eventos mouseOver e mouseOut em um aplicativo da web. Existem eventos semelhantes para o navegador Safari do iPad, pois não existem eventos como mouseOut e mouseMove?
jquery
ipad
events
mobile-safari
jquery-events
Abhishek B.
fonte
fonte
Se você estiver usando o jQuery 1.7+, é ainda mais simples do que todas essas outras respostas.
fonte
$('#whatever').on('touchstart click', function(){ /* do something... */ });
$('#whatever').on({ 'touchstart' : function(ev){}});
,ev
parece não ter nenhuma informação sobre os toques (toques, toques de destino ou toques alterados)ev.originalEvent
.A abordagem mais simples é usar uma biblioteca JavaScript multitoque como o Hammer.js . Então você pode escrever um código como:
E você pode continuar. Ele suporta toque, toque duplo, deslize, segure, transforme (ou seja, belisque) e arraste. Os eventos de toque também são acionados quando ações equivalentes do mouse acontecem, para que você não precise gravar dois conjuntos de manipuladores de eventos. Ah, e você precisa do plugin jQuery se quiser escrever da maneira jQueryish como eu fiz.
fonte
Usar o touchstart ou touchend sozinho não é uma boa solução, porque se você rolar a página, o dispositivo a detectará como toque ou toque também. Portanto, a melhor maneira de detectar um evento de toque e clique ao mesmo tempo é apenas detectar os eventos de toque que não estão movendo a tela (rolagem). Para fazer isso, basta adicionar este código ao seu aplicativo:
Eu testei e funciona bem para mim no iPad e iPhone. Ele detecta o toque e pode distinguir o toque e o toque de rolagem facilmente.
fonte
Você pode usar .on () para capturar vários eventos e testar o toque na tela, por exemplo:
fonte
.bind
está obsoleto. Você deve usar.on
O jQuery Core não tem nada de especial, mas você pode ler na página Eventos do jQuery Mobile sobre diferentes eventos de toque, que também funcionam em outros dispositivos que não sejam iOS.
Eles são:
Observe também que, durante eventos de rolagem (com base no toque em dispositivos móveis), os dispositivos iOS congelam a manipulação do DOM durante a rolagem.
fonte
Eu estava um pouco preocupado em usar apenas o touchmove no meu projeto, pois ele parece disparar apenas quando o seu toque se move de um local para outro (e não no toque inicial). Então eu combinei com o touchstart , e isso parece funcionar muito bem no toque inicial e em qualquer movimento.
fonte
document.getElementById("ttime").innerHTML = ((new Date()) - touchTime); touchTime = new Date();
Acabei de testar o plug-in GitHub jQuery Touch Events da benmajor para as versões 1.4 e 1.7+ do jQuery. É leve e funciona perfeitamente com ambos
on
ebind
ao mesmo tempo fornece suporte para um conjunto exaustivo de eventos de toque.fonte