JavaScript sem mistérios para Mozilla/Netscape e Microsoft Internet Explorer

Publicado por Bruno Tayar em 05/07/2007

[ Hits: 8.502 ]

 


JavaScript sem mistérios para Mozilla/Netscape e Microsoft Internet Explorer



Vamos tratar do problema de scripts para formulários, onde deseja-se filtrar o que o usuário digita, permitindo somente números para um campo de identidade. O grande problema é que determinados scripts tem problemas com determinados browser. Então este tutorial visa compilar e mostrar um exemplo onde se resolve este problema de forma rápida e objetiva.

O problema em questão

Alguns programadores encontram problemas na hora de criar e executar scripts dependendo do browser. Na verdade, não se trata de uma incompatibilidade. Torna-se necessário apenas ajustar o script para que funcione corretamente, independentemente do browser.

Vamos tratar do problema de scripts para formulários, onde deseja-se filtrar o que o usuário digita, permitindo somente números para um campo de identidade.

A solução e o código fonte

Suponha que um script funcione no Microsoft Internet Explorer e nele seja utilizado keyCode. O keyCode tem a função de retornar o código ASCII da tecla pressionada. Pode ser utilizado num evento tipo onKeyPress por exemplo. Neste browser em questão, o script vai funcionar perfeitamente. Já no Mozilla/Netscape, em vez de utilizar keyCode, deve-se optar pelo which.

Seja o seguinte exemplo:

function checaNumero(x){
   var y=x.keyCode; // a variável y armazenará o código ASCII da tecla pressionada.
   if(y>=48 && y<=57 || y==8){
      return true; // Se o digitado for número ou backspace apenas, o script permite a tecla
   } else {
      return false; // Não foi um número, nem backspace.
   }
}

Este código funciona perfeitamente no Microsoft Internet Explorer. Para que funcione no Mozilla/Netscape, deve ser adaptado da seguinte forma:

function checaNumero(x){
   var y=x.which;
   if(y>=48 && y<=57 || y==8){
      return true;
   } else {
      return false;
   }
}

Mas então surge um novo problema. Como adivinhar em que browser o usuário usará o sistema? Usuários de Linux não possuem o Microsoft Internet Explorer, e muitas pessoas que usam Windows não usa Mozilla/Netscape. Como resolver esse problema? O melhor é criar um código inteligente que identifique qual o browser do usuário e ajuste o script automaticamente.

A solução é descrita abaixo:

function checaNumero(x){
   if(navigator.appName=='Microsoft Internet Explorer'){
      var y=x.keyCode;
      if(y>=48 && y<=57 || y==8){
         return true;
      } else {
         return false;
      }
   }

   if(navigator.appName=='Netscape'){
      var y=x.which;
      if(y>=48 && y<=57 || y==8){
         return true;
      } else {
         return false;
      }
   }
}

Caso deseje trocar informações, mande um e-mail para [email protected]

Eng. Comp. Bruno S. Tayar.

Outras dicas deste autor
Nenhuma dica encontrada.
Leitura recomendada

Linux Slackware 12.1 com Compiz-Fusion

Alterando permissões em arquivos ou somente nos diretórios

Bloquear Portas USB no Ubuntu

No working INIT not found (Slackware) [Resolvido]

LDAP - Conceitos iniciais

  

Comentários
[1] Comentário enviado por btayar2006 em 05/07/2007 - 08:01h

Caso queiram incluir o Konqueror na brincadeira, fica da seguinte forma:

function checaNumero(x){
if(navigator.appName=='Microsoft Internet Explorer' || navigator.appName=='Konqueror'){
var y=x.keyCode;
if(y>=48 && y<=57 || y==8){
return true;
} else {
return false;
}
}

if(navigator.appName=='Netscape'){
var y=x.which;
if(y>=48 && y<=57 || y==8){
return true;
} else {
return false;
}
}
}

[2] Comentário enviado por hugoeustaquio em 06/11/2007 - 10:15h

Que tal usar jQuery e acabar com todos esses problemas de uma vez por todas?

http://jquery.com/



Contribuir com comentário