IE Proprietà o metodo non supportati dall’oggetto (Error 2146827850)

ottobre
3

Chiunque sviluppa si troverà sicuramente di fronte a un vero e proprio training center con il browser della Microsoft, per tutti gli altri dovete sapere che Microsoft è quasi sempre l’unica a non  rispettate gli standard internazionali, pertanto un webmaster dovrà fare i conti con script che funzionano splendidamente con tutti i browser ad esclusione di IE o viceversa (Cross Browser)

Molti hanno incortrato l’errore 2146827850 (forse senza nemmeno saperlo il codice di questo errore). La descrizione è “Proprietà o metodo non supportati dall’oggetto”, io l’ho incontrato con un mio file javascript che aveva questa istruzione:


function setModifyUser()
{
ULGroup=document.getElementById("ULGroup"); //riga di errore
alert(ULGroup.id);
return;
}

Quando IE dice “Object Error: Proprietà o metodo non supportati dall’oggetto” ci indica che l’oggetto che stiamo lavorando non possiede nulla di quello che ci serve. Come dicevo all’inizio, sui browser non MS tutto funzionava, quindi era impossibile che la lista UL con id=”ULGroup” non esistesse, altrimenti anche gli altri browser lo avrebbero comunicato. Per capire meglio ho aggiunto una piccola modifica al codice:


function setModifyUser()
{
try
{ULGroup=document.getElementById("ULGroup");}
catch(e)
{
messages="name:"+e.name;
messages+="message:"+e.message;
messages+="number:"+e.number;
messages+="escription:"+e.escription;
document.write(messages);
}
alert(ULGroup.id);
return;
}

ed ecco cosa mi venne detto:

name:TypeError
message:Proprietà o metodo non supportati dall’oggetto
number:-2146827850
escription:undefined

La cosa strana fù questa, eseguendo try..catch, la variabile ULGroup veniva assegnata in modo corretto e infatti avevo il mio alert(ULGroup.id); :|

Da impazzire! l’errore doveva comunque fermare lo script e invece catturavo l’errore e lo script proseguiva. Nel tempo ne ho viste tante da IE, ma questa le batteva tutte sicuramente! Cominciai a cercare sui vari motori di ricerca una soluzione, ma nulla. Molti lamentavano il problema, ma soluzioni zero. Cercai anche il codice nel support della Microsoft e indovinate un pò? Nemmeno loro ne parlano, allora mi venne il dubbio..Vuoi vedere che il loro browser crea una tabella delle id html da qualche parte remota nel suo motore e la id è già utilizzata come variabile? Tagliai la testa al toro e feci questa modifica:


function setModifyUser()
{
ULGroupS=document.getElementById("ULGroup"); //riga di senza errore
alert(ULGroupS.id);
return;
}

:) EUREKA, il solo assegnare l’oggetto html a una variabile che non avesse lo stesso (Identico) nome dell’ID risolve il problema. Notate anche che la variabile ULGroup è all’interno di una funzione, ma IE vede comuque il conflitto, quindi si deduce che la fantomatica “tabella” istanzia in modo globale.

Spero che questo possa aiutare molti altri nel cross-browser. :)

2 Comments

artorius 03/10/08 @ 09:57

Curioso, dato che, a tutti gli effetti, tu dovresti essere in grado di sovrascrivere qualunque variabile o metodo (funzione) in JS, a parte i metodi e le variabili private alle quali, comunque, non avresti accesso. Non so se c’è la clausola Protected in JS, ma non credo…

Luca Bottoni 03/10/08 @ 10:10

Ciao,
Difficile dirti quale sia la causa scatenante del problema nella gestione delle variabili/oggetti in IE. Ma nel tempo ho imparato a non stupirmi con Microsoft.

Se venissi a capo dell’enigma, non mancherò di pubblicarlo :)

Vuoi lasciare un tuo commento?

Attenzione: L'approvazione e l'invio del commento potrebbero avere dei ritardi, quindi, dopo aver premuto il pulante "Invia Commento" attendi.


*