It really doesn't matter i this not works!

« IE, ti odio »

08/12/2010 @ 15:40

« Come IE fa impazzire un webmaster (la variabile keywords) »

07/13/2010 @ 11:06

Vi racconto la storia di un piccolo pezzo di codice javascript, che funzionava felice su tutti i browser del mondo creato.

Purtroppo arrivò il brutto IE, che invece lo gradiva su una pagina mentre su un’altra, identico, non gli andava  proprio giù.

Il codice potrebbe essere, più o meno, questo:

<script type="text/javascript">
<!--
function print_something(prefix){
	// assegno keywords
	keywords = "!";

	// scrivo le keywords
	document.write( prefix + keywords );

}

// chiedo la stampa
print_something("world");

// -->
</script>

Ora, perchè un codice del genere ad IE piace moltissimo in questo file e non funziona del tutto in quest’altro?

Non vi farò giocare alle 10 differenze, nel secondo file ci sono i meta tag nell’header ed IE decide di instanziare un oggetto keywords per accedervi. Quindi non si può riutilizzare la parola keywords come variabile nella funzione perchè IE l’ha già istanziata e ogni operazione porta ad un errore.

Da notare che questo simpatico comportamento  avviene solo all’interno di funzioni (all’esterno keywords risulta undefined) e solo se keywords non è dichiarata propriamente (cioè dichiarando var keywords = “!”; il codice funziona perfettamente).
Chiaramente IE non ritorna un messaggio di errore coerente, tipo questa variabile è già dichiarata,  ma si lamenta su operazioni non valide o proprietà inesistenti.

Cosa si impara da questa esperienza?

  1. dichiarare propriamente le variabili con var nomevar = valore; non è una perdita di tempo inutile
  2. dare dei nomi troppo comuni alle variabili non è una buona idea
  3. i bug più sono stupidi più sono difficili da trovare
  4. ie sucks.  Ma in fondo questa non è un novitÃ