Este artigo apresenta principalmente informações relevantes sobre como desabilitar eventos de roda do mouse em JavaScript. Amigos necessitados podem consultá-lo.
Normalmente ajustamos a compatibilidade de versões inferiores do IE quando se trata de coisas compatíveis, mas desta vez não é porque a versão inferior do navegador é incompetente. É porque o Firefox foi longe demais e desconsidera completamente a experiência de outros navegadores. Todos os navegadores, exceto o Firefox, podem usar o evento MouseWheel para lidar com a resposta da roda do mouse. No entanto, o Firefox não suporta MouseWheel e usa o absurdo DOMMouseScroll, que não é compatível com outros navegadores, exceto o Firefox. Em outras palavras, para lidar com eventos de roda do mouse, o Firefox só pode usar DOMMouseScroll. Quem não é Firefox só pode usar o MouseWheel. Os princípios destes dois eventos são diferentes e os dados que eles processam também são diferentes.
- varfirefox=navigator.userAgent.indexOf('Firefox')!=-1;
- firefox?img.addEventListener('DOMMouseScroll',MouseWheel,falso):
- (img.onmousewheel=MouseWheel);
- funçãoMouseWheel(e){
- e=e||janela.evento;
- if(e.stopPropagation)e.stopPropagation();
- elsee.cancelBubble=true;
- if(e.preventDefault)e.preventDefault();
- elsee.returnValue=false;
- }
Vamos dar uma olhada no código completo
- <!DOCTYPEhtml>
- <estilo>
- span{fonte:14px/20pxMicrosoft Yahei;}
- #contador{
- largura:50px;altura:20px;
- borda:1pxsolid#CCC;
- plano de fundo:#F9F9F9;
- fonte:14px/20pxConsolas;
- alinhamento de texto:centro;
- margem:10px;
- }
- </estilo>
- <span>Use a roda do mouse para ajustar o valor</span><br/>
- <divid=contador>0</div>
- <roteiro>
- //Julgue o navegador
- varisIE=navigator.userAgent.match(/MSIE(/d)/i);
- isIE=isIE?isIE[1]:indefinido;
- varisFF=/FireFox/i.test(navigator.userAgent);
- //Obter elementos
- varcounter=document.getElementById(contador);
- //Evento de roda do mouse
- if(isIE<9)//Navegadores tradicionais usam o evento MouseWheel
- contador.attachEvent(onmousewheel,function(){
- //Calcula a distância que a roda do mouse percorre
- //Uma grade tem 3 linhas, cada linha tem 40 pixels, então divida por 120
- varv=event.wheelDelta/120;
- contador.innerHTML=contador.innerHTML*1+v;
- //Bloquear método padrão do navegador
- retorno falso;
- });
- elseif(!isFF)//Navegadores modernos, exceto Firefox, também usam o evento MouseWheel
- contador.addEventListener(roda do mouse,função(e){
- //Calcula a distância que a roda do mouse percorre
- varv=e.wheelDelta/120;
- contador.innerHTML=contador.innerHTML*1+v;
- //Bloquear método padrão do navegador
- e.preventDefault();
- },falso);
- else //O estranho Firefox usa o evento DOMMouseScroll
- contador.addEventListener(DOMMouseScroll,função(e){
- //Calcula a distância que a roda do mouse percorre
- //Uma grade tem 3 linhas, mas observe que a diferença aqui em relação aos pixels é que é um valor negativo
- varv=-e.detail/3;
- contador.innerHTML=contador.innerHTML*1+v;
- //Bloquear método padrão do navegador
- e.preventDefault();
- },falso);
- </script>
O texto acima é todo o conteúdo deste artigo, espero que todos gostem.