É possível implementar "long press" em JavaScript (ou jQuery)? Quão?
(fonte: androinica.com )
HTML
<a href="" title="">Long press</a>
JavaScript
$("a").mouseup(function(){
// Clear timeout
return false;
}).mousedown(function(){
// Set timeout
return false;
});
javascript
jquery
jquery-ui
jquery-mobile
jquery-events
Randy Mayer
fonte
fonte
jQuery(...).longclick(function() { ... });
Respostas:
Não existe mágica 'jQuery', apenas timers JavaScript.
fonte
clearTimeout(pressTimer)
onmousemove
, a menos que eu estou faltando alguma coisa. O que dificilmente seria sem precedentes.Com base na resposta de Maycow Moura, eu escrevi isso. Também garante que o usuário não faça um clique com o botão direito, o que acionaria um toque longo e funciona em dispositivos móveis. DEMO
Você também deve incluir alguns indicadores usando animações CSS:
fonte
:hover
estado seja pegajoso em dispositivos de toque, talvez isso também se aplique aqui.touchend
deveria disparar IMO, não há razão para mantê- lo pegajoso quando é um código especial para dispositivos de toque, talvez eu tente algo amanhã.Você pode usar o evento taphold da API móvel jQuery.
fonte
Criei evento de pressionamento longo (0,5k JavaScript puro) para resolver isso, ele adiciona um
long-press
evento ao DOM.Ouça um
long-press
em qualquer elemento:Ouça um
long-press
em um elemento específico :Funciona no IE9 +, Chrome, Firefox, Safari e aplicativos móveis híbridos (Cordova e Ionic no iOS / Android)
Demo
fonte
Embora pareça simples o suficiente para implementar sozinho com um tempo limite e alguns manipuladores de eventos do mouse, fica um pouco mais complicado quando você considera casos como clicar e arrastar e soltar, suportando tanto pressionar quanto pressionar longamente no mesmo elemento e trabalhar com dispositivos de toque como o iPad. Acabei usando o plugin jQuery longclick ( Github ), que cuida disso para mim. Se você só precisa oferecer suporte a dispositivos com tela de toque, como telefones celulares, também pode experimentar o evento jQuery Mobile taphold .
fonte
plugin jQuery. Basta colocar
$(expression).longClick(function() { <your code here> });
. O segundo parâmetro é a duração da espera; o tempo limite padrão é 500 ms.fonte
Para desenvolvedores de plataforma cruzada (Observação: todas as respostas fornecidas até agora não funcionarão no iOS) :
O mouse para cima / para baixo parecia funcionar bem no Android - mas nem todos os dispositivos, ou seja, (samsung tab4). Não funcionou em iOS .
Pesquisas posteriores parecem que isso se deve ao elemento ter seleção e a ampliação nativa interrompe o ouvinte.
Este ouvinte de eventos permite que uma imagem em miniatura seja aberta em um modal de bootstrap, se o usuário mantiver a imagem por 500 ms.
Ele usa uma classe de imagem responsiva, portanto, mostrando uma versão maior da imagem. Este pedaço de código foi totalmente testado em (iPad / Tab4 / TabA / Galaxy4):
fonte
DEMO
fonte
A resposta do Diodeus é incrível, mas impede que você adicione uma função onClick, ele nunca executará a função hold se você colocar um onclick. E a resposta do Razzak é quase perfeita, mas ele executa a função hold apenas no mouseup e, geralmente, a função executa mesmo se o usuário continuar segurando.
Então, eu entrei em ambos e fiz isto:
fonte
Para navegadores modernos para celular:
https://developer.mozilla.org/en-US/docs/Web/Events/contextmenu
fonte
bind()
jquery 1.7+ =on()
andunbind()
=off()
Você pode definir o tempo limite para esse elemento ao pressionar o mouse e limpá-lo ao subir:
Com isso, cada elemento obtém seu próprio tempo limite.
fonte
$(this).mouseup(function(){});
não remove o manipulador de eventos, ele adiciona outro. Use em seu.unbind
lugar.off()
agora em vez de desvincular.Você pode usar o taphold do jquery-mobile. Inclua o jquery-mobile.js e o código a seguir funcionará bem
fonte
Mais elegante e limpo é um plugin jQuery: https://github.com/untill/jquery.longclick/ , também disponível como packacke: https://www.npmjs.com/package/jquery.longclick .
Em suma, você o usa assim:
A vantagem deste plugin é que, ao contrário de algumas das outras respostas aqui, os eventos de clique ainda são possíveis. Observe também que um clique longo ocorre, assim como um toque longo em um dispositivo, antes do mouseup. Então, esse é um recurso.
fonte
Para mim é trabalhar com aquele código (com jQuery):
fonte
Você pode verificar o tempo para identificar Click ou Long Press [jQuery]
fonte
como isso?
fonte
Você pode usar
jquery
eventos de toque. ( veja aqui )fonte
Eu precisava de algo para eventos de teclado longpress, então escrevi isso.
fonte
Acho que isso pode te ajudar:
fonte