Anderson Triacca

Pular Navegação Ir para a Busca

08/10/2009Ajax II - Criando o Objeto de Requisição

Atigo Originalmente publicado no MX Studio em 2007.

Olá a todos. Neste texto iremos finalmente entrar na parte prática do Ajax, onde ensinarei a criar o objeto de requisição XMLHttp object que é a base de todo sistema ajax. Chega de conversa e vamos ao que interessa.

Antes porém de uma parte mais prática, se faz necessária uma explicação. Os navegadores Microsoft, por serem baseados em JScript, interpretam o objeto de requisição como um ActiveXObject(quem não lembra das janelinhas do IE avisando risco de segurança por causa de scripts), e os outros navegadores, por serem baseados em Javascript, interpretam o objeto como sendo um Objeto do núcleo da linguagem, fazendo com que a gente tenha que testar o tipo de navegador da pessoa para criarmos o objeto de forma que funcione em qualquer navegador compatível com a tecnologia.

Criando o Objeto em navegadores microsoft:

var objetoXMLHttp = false;
try {
 objetoXMLHttp= new ActiveXObject(”Msxml2.XMLHTTP”);
} catch (e) {
 try {
  objetoXMLHttp = new ActiveXObject(”Microsoft.XMLHTTP”);
 } catch (e2) {
 objetoXMLHttp = false;
 }
}
Msxml2.XMLHTTP – Navegadores microsoft mais atuais(IE5+, Jscript 5.0)
Microsoft.XMLHTTP – Navegadores microsoft mais antigos(IE4-)

Os navegadores Microsoft possuem duas versões diferentes do objeto, este código tenta criar primeiramente um objeto do tipo Msxm12.XMLHTTP, que é implanteado pelos navegadores Microsoft mais atuais e é mais comum. Se não obtiver sucesso ele tenta criar um objeto do tipo Microsoft.XMLHTTP, que é implantado por navegadores Microsoft mais antigos, meio raro de se encontrar mas um pouco de compatibilidade não mata ninguém. Caso não obtenha sucesso em nenhuma das tentativas, é sinal que o navegador não é Microsoft, e devemos ciar o objeto de outra forma:

objetoXMLHttp = new XMLHttpRequest();
Esse bloco de código cria o objeto compatível todos os outros navegadores que suportam o mesmo e não são Microsoft.
Agora que você já sabe as diferenças básicas entre o objeto entre os navegadores, vamos criar uma função que nos retorne o objeto compatível com qualquer navegador que suporte o mesmo:

function criarObjetoXMLHTTPRequest() {
var objetoXMLHttp;
/*@cc_on
 @if (@_jscript_version >= 5)
  try {
   objetoXMLHttp = new ActiveXObject(”Msxml2.XMLHTTP”);
  } catch (e) {
  try {
   objetoXMLHttp = new ActiveXObject(”Microsoft.XMLHTTP”);
  } catch (e) {
   objetoXMLHttp = false;
  }
 }
 @else
  objetoXMLHttp = false;
 @end @*/
if (!objetoXMLHttp && typeof XMLHttpRequest != ‘undefined’) {
 try {
  objetoXMLHttp = new XMLHttpRequest();
 } catch (e) {
  objetoXMLHttp = false;
 }
 }
 return objetoXMLHttp;
}

Uma parte do código requer um pouco de atenção extra, o bloco “/*@cc_on”, que ativa o suporte de compilação condicional. O código de compilação condicional deve estar sempre dentro de um comentário, isso permite que navegadores que não suportam compilação condicional possam ignorar esta parte do script, como compilação condicional é recurso exclusivo de JScript, somente navegadores IE irão ler esta parte do código. Isso torna o script compatível com todas as versões do IE que suportam o objeto e evita que navegadores baseados no Gecko possam interromper o script ao tentar criar um objeto existente somente no Internet Explorer.

Queria deixar claro que é necessário um pouco de conhecimento de Javascript para conseguir entender corretamente esta seqüência de textos.

OBS: Tratamento de exceções não é suportado em versões de Jscript inferiores a 5, mas foi usado um try/catch da mesma forma quando é detectada esta versão para evitar erros em navegadores atuais, e navegadores mais antigos irão ignorar o bloco try/catch e criar o objeto corretamente.

Por hoje é só, num próximo texto eu continuo no Ajax.

Abraço a todos

< ajax /> comentários(0)

Comentar:

Anderson Triacca

Anderson Triacca

Estudante Universitário de Design Gráfico pela Universidade de Caxias do Sul, certificado em desenvolvimento Ajax pelo grupo Processor Alfamídia de Porto Alegre e acima de tudo Desenvolvedor Web.

Trilha Sonora

  • Belchior: Alucinação
  • Dire Straits: Sultans of Swing
  • Gabriel o Pensador: Ao Vivo MTV
  • Legião Urbana: Como é que se diz eu te amo?
  • Pink Floyd: The Piper at Gates of Dawn
  • Sonata Arctica: Ecliptica

Livros Recomendados

  • Anthony Bozza: Slash
  • Carlos Marcelo: Renato Russo, o Filho da Revolução
  • Charles Sanders Peirce: Semiótica
  • Jefrey Zeldman: Projetando Websites Compatíveis
  • Lance Armstrong: De volta à Vida
  • Paulo Coelho: O Demônio e a Srt. Prym
Todos os direitos reservados a Anderson Triaccaanderson@andersontriacca.com