Internet Explorer: getElementsByName.
Scrivo questo articolo per sfogare tutta la mia rabbia contro chi è a capo del progetto di sviluppo di Internet Explorer.
Bene, i tuoi programmatori si chiamano Qui, Quo e Qua????
Possibile che una funzione semplice e per giunta standard W3C non debba funzionare? solo dopo prove su prove e sbattimenti di testa mi debba arrendere e iniziare a sospettare che sia il browser ad avere questo orrendo bug??
La funzione javascript incriminata è la comunissima getElementsByName.
Un banale esempio di utilizzo è:
<script language="javascript" type="text/javascript" >
…
function RiempiCampiMessaggio(id)
{
var titolo = document.getElementsByName("titolo_"+id);
//alert(titolo.length);
document.getElementById("nuovotitolo").value = titolo[0].innerHTML;
}
…
</script>
e nel codice HTML ho messo una riga del genere
…
<div id="titolo" name="titolo_1">Titolo 1</div>
<input type="button" value="clicca"
onclick="RiempiCampiMessaggio(1);" />
…
In questo esempio la funzione che i programmatori di Internet Explorer non hanno saputo scrivere in modo decente e appunto la getElementsByName la quale mi restituisce un oggetto vuoto!
In tutti gli altri browser il codice è perfettamente funzionante ovvero nel TAG il cui ID è “nuovotitolo” viene inserito il contenuto HTML del tag il cui nome è “titolo_1″. I test sono stati fatti su Firefox (Windows, MAC OS X e Linux), Opera, Safari (Windows e MAC OS X), Konqueror e l’unica pecora nera e proprio Internet Explorer. Ovviamente la versione è la 7!!! non oso pensare cosa accade sulla 6 il non-standard de-facto!
Fortunatamente le soluzioni esistono ma certo non grazie a chi ha scritto IE.
{
//eh si, sfruttimao un altro bug di IE per capire che
//è prorpio lui ad essere eseguito!!!
document.getElementsByName = function(name, tag){
if(!tag) tag = ‘*’;
var elems = document.getElementsByTagName(tag);
var res = []
for(var i=0;i<elems.length;i++)
{
att = elems[i].getAttribute(’name’);
if(att == name) res.push(elems[i]);
}
return res;
}
}
Questa soluzione ovviamente è compatibile con “tutto il resto del mondo” e fa funzionare in modo standard anche IE 7 (lascio a voi vedere se anche la 6 funziona, se non lo fa cambiate browser).
Mi auguro che con tutto il rumore che stanno facendo sull’uscita della versione 8 di Internet Explorer questi problemi saranno solo un ricordo.

|
categorie: Fisica, Tecnologia
|
Hello 








