XMLHttpRequest

XMLHttpRequest (frequentemente abreviado como XHR ) é um objeto de navegador acessível em JavaScript que permite obter dados em XML , JSON , mas também HTML , ou mesmo texto simples usando solicitações HTTP .

Vantagens e desvantagens

A principal vantagem está no lado assíncrono. A página inteira não precisa mais ser totalmente recarregada quando uma parte precisa ser alterada, o que economiza tempo e melhora a interação com o servidor e, portanto, com o cliente.

As desvantagens são:

O conteúdo dinâmico exibido pelo uso de JavaScript explica porque o navegador não pode ter o mesmo comportamento de uma página html carregada em sua totalidade (salvando links, favorito, botão Voltar).

Existem outras diferenças:

O ponto de vista do programador

Criação de um objeto XMLHttpRequest

Qualquer que seja o navegador:

function createXhrObject() { if (window.XMLHttpRequest) return new XMLHttpRequest(); if (window.ActiveXObject) { var names = [ "Msxml2.XMLHTTP.6.0", "Msxml2.XMLHTTP.3.0", "Msxml2.XMLHTTP", "Microsoft.XMLHTTP" ]; for(var i in names) { try{ return new ActiveXObject(names[i]); } catch(e){} } } window.alert("Votre navigateur ne prend pas en charge l'objet XMLHTTPRequest."); return null; // non supporté } xhr = createXhrObject();

Carregando código executável

O código JavaScript presente na página carregada via XMLHttpRequest não será executado durante o carregamento.

Você deve inserir o código JavaScript carregado na página atual para que seja executado.

O código a seguir também pode executar o JavaScript encontrado entre as tags <script> </script> na página filha, após carregá-la conforme descrito anteriormente:

if (XHR.readyState == 4) { document.getElementById('contenu').innerHTML = XHR.responseText; var js = document.getElementById('contenu').getElementsByTagName('script'); for( var i in js ) { eval(js[i].text); } }

Histórico

XMLHttpRequest foi desenvolvido pela Microsoft , como um objeto ActiveX , para o Internet Explorer 5.0. (Setembro de 1998 ). Foi então assumido e implementado sucessivamente no Mozilla 1.0 (Maio de 2002), Safari 1.2 (Fevereiro de 2004), Opera 7.60 TP1 (Agosto de 2004) então Konqueror 3.4 (Março de 2005)

Em abril de 2006 , foi proposto que se tornasse uma recomendação do W3C .

O uso de XMLHttpRequest requer o uso da linguagem JavaScript.

Os navegadores o implementam de diferentes maneiras: ActiveX para Internet Explorer, objeto para outros. A criação do objeto é, portanto, feita de forma diferente dependendo do navegador. Além disso, para criar o ActiveX no Internet Explorer, é necessário testar várias versões. No entanto, após a criação do objeto, os métodos e atributos são os mesmos para todos os navegadores.

Microsoft foi a primeira a incorporar (Setembro de 1998 ) funcionalidade XMLHttp em seu Internet Explorer (5-7) navegador web na forma de um ActiveX (Internet Explorer <7) sob o nome MSXML.

Os desenvolvedores do projeto Mozilla então implementaram sua versão do XMLHTTP sob o nome XMLHttpRequest no Mozilla versão 1.0 (Maio de 2002) Outros navegadores então implementaram XMLHttp por sua vez: Safari 1.2 (Fevereiro de 2004), Konqueror 3.4 (Março de 2005), Opera 8.0 (Abril de 2005), icab 3.0b352.

O World Wide Web Consortium então tenta padronizar a API (Interface de Programação) publicando as especificações da API em sua versão 1 sob o nome XMLHttpRequest em15 de abril de 2007 e versão 2 em 25 de fevereiro de 2008. Portanto, existem várias implementações de XMLHttpRequest. Para oferecer suporte a todas essas versões, uma API javascript de alto nível ( AJAX ) permite que você ignore as diferentes implementações e versões de XMLHttpRequest.

Porém, nesta época (em 2007), XMLHttpRequest foi criticado por afetar a acessibilidade da web .

O padrão XMLHttpRequest tem um sucessor, XMLHttpRequest Nível 2 e outras tecnologias também o substituem:

  • O W3C propôs o controle de acesso para trocar dados com servidores em diferentes domínios,
  • A Microsoft ofereceu o XDomainRequest desde o Internet Explorer 8, agora substituído pela versão 2 do padrão.
  • O WebSocket oferece as possibilidades do objeto e muito mais.

Para ver também

Artigos relacionados

links externos

Notas e referências

  1. Site Mozilla (MDN) - API XMLHttpRequest
  2. Se os itens em um widget gerenciado são carregados, por exemplo, por meio do objeto XMLHttpRequest, e não estão presentes no DOM o tempo todo, os autores devem usar nível de aria, aria-posinset e aria-setsize, e garantir que aria-owns seja não é necessário para transmitir associação com o widget.
  3. "Changelog for Opera 7.60 Technical Preview 1 for Windows" (versão de 21 de janeiro de 2012 no Internet Archive ) ,21 de janeiro de 2012
  4. (en) O objeto XMLHttpRequest , ou (en) W3C - XMLHttpRequest Working Draft