Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial
  • Lezione 5 di 24
  • livello principiante
Indice lezioni

Assegnazione cross browser

Lavorare con browser diversi e raggiungere le medesime funzionalità
Lavorare con browser diversi e raggiungere le medesime funzionalità
Link copiato negli appunti

Ciò che contraddistingue Internet Explorer dagli altri browser è l'assegnazione dell'oggetto XMLHttpRequest. Non solo è parte di un ActiveX e quindi esposto maggiormente a restrizioni sulla configurazione del browser dell'utente, ma è anche supportato, seppur malamente, dalla versione 4.

Volendo evitare di mostrare errori a chi naviga con questa vecchia versione è necessario verificare che la stringa MSIE 4 non sia presente nel nome che contraddistingue il browser, ovvero navigator.userAgent, che per sicurezza ancora maggiore viene assegnato ad una variabile dopo essere stato cambiato nel corrispettivo in maiuscolo.

Prima ancora è necessario controllare che il supporto all'oggetto XMLHttpRequest sia nativo o che il browser sia almeno di tipo Internet Explorer.

Listato 1. Dichiarazione dell'oggetto XMLHttpRequest cross-browser

// funzione per assegnare l'oggetto XMLHttpRequest
// compatibile con i browsers più recenti e diffusi
function assegnaXMLHttpRequest() {

// lista delle variabili locali
var
 // variabile di ritorno, nulla di default
 XHR = null,
 
 // informazioni sul nome del browser
 browserUtente = navigator.userAgent.toUpperCase();

 // browser standard con supporto nativo
 // non importa il tipo di browser
 if(typeof(XMLHttpRequest) === "function" || typeof(XMLHttpRequest) === "object")
  XHR = new XMLHttpRequest();

 // browser Internet Explorer
 // è necessario filtrare la versione 4
 else if(
  window.ActiveXObject &&
  browserUtente.indexOf("MSIE 4") < 0
 ) {
 
  // la versione 6 di IE ha un nome differente
  // per il tipo di oggetto ActiveX
  if(browserUtente.indexOf("MSIE 5") < 0)
   XHR = new ActiveXObject("Msxml2.XMLHTTP");

  // le versioni 5 e 5.5 invece sfruttano lo stesso nome
  else
   XHR = new ActiveXObject("Microsoft.XMLHTTP");
 }

 return XHR;
}

La funzione mostrata è solo una delle tante presenti in rete per istanziare un oggetto XMLHttpRequest a seconda del browser e della sua versione ma è una delle poche che raramente potrà fallire o generare errori anche su computer non ancora aggiornati.

Il concetto alla base è tentare di filtrare i browser riconosciuti come validi per l'utilizzo di AJAX e sfruttare l'eventuale ritorno nullo a proprio favore, inizializzando l'intero applicativo AJAX solo se l'oggetto è riconosciuto come valido.

Un esempio di quanto appena detto potrebbe essere questo:

Listato 2. Riconoscere un browser abilitato ad AJAX

onload = function() {
 var ajax = assegnaXMLHttpRequest();
  if(ajax) {
   // applicativo AJAX
 }
}

dove qualora l'oggetto non dovesse essere stato assegnato o dovesse essere ancora nullo o false, non si disturberebbe l'utente arrivato con messaggi di errore o con la comparsa del triangolo giallo solitamente mostrato ogni qualvolta siano presenti dei problemi nella pagina visualizzata.

Ti consigliamo anche