Um componente que tenho muito orgulho de ter criado é o Mozilla Developer Network’s da Mozilla Developer Network. Ele é elegante, flexível, acessível pelo teclado e relativamente compacto (embora exija jQuery). Um problema que notei, no entanto, foi que tocar uma vez abria o menu (bom), mas era preciso tocar duas vezes em um link de submenu para acionar uma mudança para o URL do link. Não é um problema catastrófico, mas certamente é irritante. Depois de alguns ajustes, encontrei uma solução que resolveu o problema!
O JavaScript
Descobri o problema principal: o item do menu principal foi codificado para abrir o submenu quando o mouseenter
. Embora eu estivesse grato pelo fato de o Safari móvel do iOS estar usando mouseenter
como um simples acionador de abertura, isso estava causando aos usuários a dor de tocar duas vezes para visitar um link no submenu. Por isso, aproveitei o recurso touchstart
evento:
$menuItem.on('touchstart mouseenter focus', function(e) { if(e.type == 'touchstart') { // Don't trigger mouseenter even if they hold e.stopImmediatePropagation(); // If $item is a link (<a>), don't go to said link on mobile, show menu instead e.preventDefault(); } // Show the submenu here });
Por que não touchend
? Infelizmente, se o usuário mantivesse o dedo pressionado por mais de um toque rápido, o evento mouseenter seria acionado. É um pouco estranho, mas como tenho o touchstart
como o primeiro evento no ouvinte, posso usar o stopImmediatePropagation
para evitar que o mouseenter
nunca seja acionado. O que também é bom é que não preciso fazer nenhuma detecção de dispositivo para fazer malabarismos com o touchstart
e mouseenter
, então esta é uma solução fantástica…
…mas não é uma solução perfeita. Se o usuário tocar e segurar o link do item do menu principal, o menu de contexto do navegador móvel não aparecerá porque usamos preventDefault
. Ainda estou explorando e experimentando, portanto, continuarei atualizando esta postagem enquanto procuro o Santo Graal!
Como criar um RetroPie no Raspberry Pi – Guia gráfico
Hoje em dia, podemos jogar jogos incríveis em nossos consoles de jogos superpotentes, PCs, headsets de RV e até mesmo em dispositivos móveis. Embora eu goste de jogar novos jogos hoje em dia, tenho saudades dos sistemas de jogos retrô que eu tinha quando era criança: o Nintendo original…
39 Shirts – Deixando a Mozilla
Em 2001, eu tinha acabado de me formar em uma escola de ensino médio de uma cidade pequena e estava indo para uma faculdade de uma cidade pequena. Encontrei-me no pitoresco laboratório de informática, onde os computadores de baixa qualidade apresentavam dois navegadores: Internet Explorer e Mozilla. Foi nesse laboratório que me apaixonei…
Controles deslizantes do Facebook com Mootools e CSS
Uma das melhores partes de ser um desenvolvedor que usa o Facebook é que posso obter ótimas ideias para o aprimoramento progressivo de sites. O Facebook incorpora muitos recursos avançados de JavaScript e AJAX: carregamento de fotos por seta para a esquerda e para a direita, menus suspensos, janelas modais e…
MooTools Diversão com Fx.Shake
Adicionar movimento ao seu site é uma ótima maneira de atrair a atenção para elementos específicos que o senhor deseja que os usuários notem. É claro que o senhor poderia usar o Flash ou um GIF animado para obter o efeito de movimento, mas os gráficos podem ser difíceis de manter. Então, entre…