Stefan Ghinea.it | English versionEnglish version | e-mail

  • Cerca nel sito
   myway con Google:
   
   Web Ghinea.it
   
  • Socialnetwork
Web Agency Prato:
Creazione Siti, Indicizzazione, Ottimizzazione
 
  facebook  twitter  youtube 
 
  • ContattamiSkype
Web Agency Prato:
richiesta informazioni
 
My status
Contattami

Lezioni AJAX: assegnazione cross browser

 

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.

   03/09/2010 09:28:59 am
  • No Related Post
1 Comment »

Un commento a “Lezioni AJAX: assegnazione cross browser”

  1. [...] Lezioni AJX- I metodi XMLHttpRequest I [...]

    Lascia un commento

Spam protection by WP Captcha-Free

  • I bannerGhinea.it
minibanner1
minibanner2
minibanner3
minibanner4
  • Sidebar
  • Categories:
  • Abbiamo lanciato a gennaio 2012 un nuovo sito WordPress: tmptecnorestauri.it
    Abbiamo lanciato alla fine di novembre 2011 un nuovo sito WordPress: infortunisticabologna.net
    Un sito amatoriale: www.sorrisodiluna.too.it
    Giochi online: www.mostfun.com
    Sempre classico: www.gianlucabianchi.it
    I siti web della settimana
    WordPress inarrestabile
    La PEC… vola
    Google nemico della memoria?
    Anonymous: nemici pubblici numero uno







    Stefan Ghinea - Consulenze informatiche e soluzioni software
    Via Marchini, 26 - 59100 Prato (PO) - Tel.: 340 2123560; Fax: 0574 027820  E-mail Home page
    © 2010 by GhineaWebSolutions.it