Todo desenvolvedor Web, tem noção dos problemas que enfrentamos ao trabalhar com desenvolvimento de sites hoje em dia. Na verdade 90% dos problemas são atribuídos ao Internet Explorer, mais ainda quando falamos da versão 6. Mas o fato é que não existe somente ele, existe uma lista bem grande de navegadores, e mesmo quando você foca nos mais populares, você encontra problemas para testá-los, pois não há a possibilidade de rodar todos no Linux. Com essa série de posts sobre Desenvolvimento Cross-browser, eu vou mostrar como eu faço para atingir a maior parte de casos possíveis e dar algumas dicas de como eu faço para construir um html que funciona sem necessidade de hacks entre diferentes plataformas. Have Fun!
Principais navegadores
Hoje temos 5 principais navegadores sendo utilizados: Firefox, Safari, Opera, Chrome e Internet Explorer. Cada um desses navegadores possuem uma peça fundamental para o seu funcionamento, e isso determina o quão bom eles serão, e essa peça é o motor de javascript.
O motor de javascript, ou Javascript Engine em inglês, é o responsável por montar o layout das páginas nos navegadores, é ele quem transforma o html que temos das páginas em imagens, letras de diferentes formas, cores e tamanhos, ou seja, desenha a página apartir do html dado.
Os motores de javascript existentes hoje são os utilizados por estes 5 navegadores. Na verdade até existem outros, mas alguns foram abandonados e só são utilizados como material de consulta ou experimentos pequenos, e outros poderão ser muito utilizados no futuro, principalmente com a expansão da internet móvel através de celulares, palms e netbooks.
Abaixo segue a lista dos principais motores de javascript, com o seu respectivo navegador Web.
- Firefox Gecko e Tracemonkey - acredito que esse seja o engine mais famoso, principalmente pela precisão de renderização do html. Para a próxima versão do Firefox, chamada de 3.5, o Gecko será substituído pelo seu sucessor Tracemonkey, que visa competir com a performance oferecida pelo V8 e WebKit e a implementação de HTML 5.0.
- Safari Webkit - Este é o engine desenvolvido pela Apple para o seu navegador web Safari. Ele possui uma impressionante performance, e uma precisão de renderização superior a do Firefox em alguns pontos.
- Opera Presto - O Opera é um navegador que possui muitos adéptos, mas mesmo assim não consegue atingir uma faixa significante de usuários globais. Mas acredito que se não houvesse o Internet Explorer na jogada, ele certamente daria trabalho aos demais. Seu engine Presto é muito bom, e desponta como um dos melhores e mais rápidos renderizadores.
- Chrome V8 - A grande surpresa do Google, feito meio que por baixo dos panos, caiu como uma bomba na internet com o lançamento do Google Chrome. Infelizmente esse ainda não tem para Linux mas logo estará disponível.
- Internet Explorer IE Javascript Engine - essa que é considerada a maior bomba da internet. Ele que carrega em seu nome "Internet", o que acaba sendo muito sugestivo para novos usuários, ou usuários leigos. Pelo fato do Windows rodar em mais de 80% dos pcs do mundo, o IE ocupa 90% do mercado de navegadores. Fato esse que faz da Microsoft um alvo de processos contra monopólio, e principalmente, pela oferta de software com baixa qualidade ou qualidade duvidosa.
Essa é só uma apresentação do universo de navegadores que devemos ter conhecimento, na hora de programarmos um site.
Entendendo a importância e diferenças dos motores de javascript
Agora vamos entender um pouco o que há de diferente em cada um desses motores, e principalmente, o porquê o IE é alvo de tantas críticas.
Para início de conversa, você precisa entender que a internet possui regras, todas elas regidas por orgãos responsáveis, no caso das linguagens de marcação (HTML, XHTML, XML, CSS, etc) é a W3C, quem faz a regulamentação. Já o javascript a coisa funciona um pouco diferente, ele segue um padrão de script desenvolvido pela ECMA International, que descreve como a linguagem deve ser implementada, o ActionScript por exemplo, usa um padrão ECMA para sua linguagem, por isso ela é tão semelhante ao Javascript.
Hoje todas as empresas que desenvolvem navegadores, tentam seguir os padrões estabelecidos, mas o fato é que os padrões não abrangem tudo que precisa ser feito. Pois as empresas possuem necessidades específicas de integração, por exemplo o Safari e o IE precisam ter integração com seus sitemas operacionais, para oferecer uma melhor experiência de uso aos seus clientes. Caso esse que pode gerar problemas, quando um site é disponibilizado para uso geral, mas somente funciona integrado com um determinado sistema operacional.
Sabendo disso, fica mais fácil de entender porquê o IE é tão diferente. Quando o IE foi criado para derrubar o Netscape, não existiam os orgão regulamentadores, ou ao menos não eram tão respeitados como hoje. O que gerou um problema praticamente insolúvel, por que a Microsoft resolveu criar seu próprio padrão de linguagem. Isso acabou fazendo com que algumas tags, regras de css e comandos javascript, funcionem somente nele.
Mas com base nesses problemas todos os demais navegadores possuem algumas peculiaridades, mas acabam seguindo todos as mesmas linhas de pensamento, o único ainda a andar meio na contra-mão é o Internet Explorer, e você verá que normalmente programamos para dois navegadores: IE e os demais.
Conslusão
Tendo noção desse universo de navegadores você começará a entender como se dá o desenvolvimento Cross-browser, no próximo post sobre o assunto eu irei relatar como montar um ambiente de testes bem legal no Linux, isso garantirá que você consiga ter a possibilidade de ver seus trabalhos nas diferentes plataformas sem a necessidade de usar uma virtual machine.
O ambiente criado consegue atender os testes com o IE 6, Firefox 3.0, Safari e Opera. Ele não tem nada de especial, mas é uma mão na roda para quem precisa testar em todas as plataformas. Somente o Google Chrome que ainda fica de fora.
Até lá.





![PythonBrasil[5]](http://www.pythonbrasil.org.br/2009/saiba-mais/apoio-divulgue/pythonbrasil-rectangle.gif)

Parabéns pelo post, muito
Parabéns pelo post, muito legal!
Valeu! Que bom que tenha
Valeu! Que bom que tenha gostado, estou tentando fazer a terceira parte em vídeo, quando conseguir finalizar ele, ponho no ar, hehehe.
Post new comment