Abbiamo visto, quando abbiamo parlato del DOM che la difficoltà maggiore della programmazione JavaScript consiste nel fatto che a browser differenti corrispondono differenti modelli di documenti.
JavaScript ci consente di verificare in un modo molto semplice se una proprietà di un oggetto esiste oppure no, è sufficiente utilizzare la sintassi:
if (nomeOggetto.nomeProprietà) {
//istruzioni
}
se la proprietà esiste, nomeOggetto.nomeProprietà restituisce true e quindi la condizioni è verificata (e dunque le istruzioni vengono eseguite). Se la proprietà non esiste nomeOggetto.nomeProprietà restituisce false, e quindi la condizione non è verificata.
Questo accorgimento ci è molto utile nei molti casi in cui vogliamo adattare la pagina a seconda del browser: ad esempio per spedire un foglio di stile differente a seconda del browser usato.
Abbiamo detto che internet Explorer (qualsiasi versione) viene identificato da document.all, Netscape da document.layers, i browser di nuova generazione da document.getElmentById.
Per individuare il browser e far eseguire un codice differente a seconda del risultato, dovete allora impostare un programma di questo genere:
- se è presente document.all
codice da eseguire (se entriamo in questa casistica, i successivi else if ed else non vengono neanche valutati) - se invece è presente document.layers
codice da eseguire - se è presente document.getElementById
codice da eseguire - in tutti gli altri casi
codice da eseguire
Traducendo quanto appena detto in codice JavaScript:
if (document.all) {
alert("stai usando Internet Explorer");
}
else if (document.layers) {
alert("stai usando Netscape 4");
}
else if (document.getElementById) {
alert("stai usando Netscape 6, o un browser di nuova generazione");
}
else {
prompt ("stai usando un browser sconosciuto");
}
Attenzione però alle "proprietà mimetiche" di Opera, che è in grado di camuffarsi da Internet Explorer o da Netscape. Se volete approfondire l'argomento, e vedere come spedire un differente foglio di stile esterno a seconda del browser potete consultare due articoli su html.it: L`arte dello sniffing: come riconoscere i browser e Riconosciamo i browser con Javascript.