Em Javascript, ao usar parseInt não omita o segundo parâmetro: radix

Se quiser garantir compatibilidade com navegadores mais antigos quando utilizar a função parseInt para analisar um número decimal nunca omita o segundo parâmetro que no W3School eles chamam de radix mas que nós conhecemos melhor como base.

Exemplo de utilização sem compatibilidade:
1
2
3
var page = parseInt('08');
// page assume 0 em navegadores antigos
// e assume 8 nos navegadores modernos.
Com compatibilidade:
1
2
var page = parseInt('08',10);
// page assume 8 em ambos navegadores


Descobri isso pois um cliente meu que havia feito uma apresentação html5 pronta para tocar no iPad reclamou que a apresentação funcionava muito bem em um iPad de segunda geração mas que as transições automática se interrompiam a partir do slide 7 quando ele utilizava um iPad 1. Depurando o código afunilei até uma função que se chama changePage e fazia o uso perigoso de parseInt. Até então eu não desconfiava que esse era um uso perigoso. Foi quando dei um pulinho no W3Schools e li a palavra deprecated no trecho abaixo:

If the radix parameter is omitted, JavaScript assumes the following:
  • If the string begins with "0x", the radix is 16 (hexadecimal)
  • If the string begins with "0", the radix is 8 (octal). This feature is deprecated
  • If the string begins with any other value, the radix is 10 (decimal)
E então bastaram alguns testes para descobrir essa discrepância entre versões. É certo que o problema aqui não é o hardware e sim a versão do IOs. Mas como os iPads 1 vão apenas até iOs 5 alguma coisa então, para o cliente, parece um problema do dispositivo.

Fiz um tira-teima pra ver se o problema ocorreria entre versões do Safari desktop para isso baixei e instalei a última versão para Windows que a Aple  fizeram para o Safari (5.1.7) e comparei com a versão mais atual do Safari no momento, a 8.0.3. O resultado foi que o comportamento incoerente se repete.


Veja o vídeo que eu gravei sobre o caso:


http://youtu.be/pN3a-75urVI

 

Comentários

Postagens mais visitadas deste blog

Curtir publicações automaticamente no Facebook. Por que isso não é uma boa idéia?

BlueStacks - Agora é mais fácil rodar Android no seu PC ou Mac