Newsgroup: it.comp.lang.javascript
Titolo: [?] Studi: window/body onload + setAttribute

Allora.
Sto giocando con un bell'oggettino c# che genera lato client una
window.onload dove assegna proprietą ed eventi agli oggetti in base ai
criteri settati (sto studiando/giocando per rimuovere proprietą
personalizzate e qualsiasi evento dal codice html).
2 domande/curiositą, nel caso qualcuno ci abbia gią studiato (se riesco nel
fine settimana faccio comunque un po' di test):
a) setAttribute("onclick","alert('ok')");
   Io bellobbello ho fatto quanto sopra con mozilla e MERAVIGLIA funziona.
Sviluppo un po' e passo a IE => ignorato!
   Da quel che ho capito IE crea la PROPRIETA' onclick e NON il metodo
onclick.
   Da qui la domanda: qual č il comportamento corretto? Mi fa un po' schifo
a dirlo, ma a naso mi sembra che IE segua gli standard (o quantomeno la
logica: setAttribute=set Attribute=setta attributo).
b) window.onload. Sto cercando di capire le differenze con body.onload.
Leggo qua:
http://msdn.microsoft.com/library/default.asp?url=/workshop/author/dhtml/reference/events/onload.asp
che č una rimappatura di window.onload. Uso quindi sempre window.onload?
(ho sempre usato body.onload con IE)? Conoscete problemi legati a ciņ?
c) setAttribute Opera. Testato con Opera 7.21, ignora completamente
proprietą personalizzate. Conoscete per caso un escamotage per ovviare a
questo problema (a parte scaricare le ultimissime release che, leggo, hanno
risolto questo problema)?
Grazie
-- 
"Affacciati affacciati benedici, guardaci
 guardaci...guardaci!
 Tanto sono quasi duemila anni che stai a guardare!"
									    E.B.

 proprietà personalizzate.
Ed io ignoro Opera, a meno che non sia solo per questioni di CSS.
-- 
ZER0://coder.gfxer.web-designer/
~ Una mente perversa e' un peccato sprecarla.
(A dirty mind is a terrible thing to waste)
on air ~ "Gianluca Grignani - Che ne sarà di noi"

 Ed io ignoro Opera, a meno che non sia solo per questioni di CSS.
Sì, in effetti se funziona l'assegnazione delle proprietà "standard" e per
i metodi, in ambiente internet le proprietà personalizzate denotano
controlli da farsi lato client, ma che inevitabilmente saranno anche fatti
lato server => se Opera non li assegna amen, varrà solo la validazione lato
server.
Era più una curiosità, se si riusciva a fare un qualcosa del tipo
if(!oggetto.setAttribute) oggetto.setAttribute=function() {....} Ma poi
cosa ci metto nella function? Mi sa nulla...
Vedrò di controllare se con l'ultima release funziona, poi me ne laverò le
mani.
Grazie
-- 
"Ti sei salvato
 o sei entrato in banca pure tu?"
									    A.V.

 if(!oggetto.setAttribute) oggetto.setAttribute=function() {....} 
Ma fammi capire, Opera 7.21 non ha neppure il setAttribute?? Da quanto
avevi detto, avevo capito che non funzionava per attributi custom; non che
era del tutto assente.
-- 
ZER0://coder.gfxer.web-designer/
~ La vita e' una tempesta, ma prenderla nel culo e' un lampo.
(B. Grillo)


 era del tutto assente.
Esatto; se faccio un setAttribute("size","100") funziona, con
setAttribute("pippo","pluto") non segnala errori ma ignora. In effetti così
decade il mio "if(!obj.setAttribute) ...". Resta solo da capire se per caso
esiste un qualcosa di proprietario Opera (che è riconoscibile da
window.Opera, se non ricordo male). Oppure if(window.Opera) "format c:" e
risolviamo a monte!
-- 
"E' l' ignoranza che crea l'intolleranza
 di gente cieca e senza coscienza"
									  S.S.S.

 Sviluppo un po' e passo a IE => ignorato!
Hai provato a fare così come segue?
elem.setAttribute("onclick", new Function("alert('ok');"));
oppure
elem.setAttribute("onclick", function() { alert('ok'); });
Inoltre ti volevo chiedere: che differenza fa se imposti direttamente
la proprietà al posto di utilizzare setAttribute?
elem.onclick = function() { ... };
Gaetano

 elem.onclick = function() { ... };
Nessuna...nel senso: dato che devo settare anche proprietà speravo di usare
la stessa sintassi sia per proprietà standard (es. size), sia per proprietà
personalizzate (es. required), sia per eventi (esempio onclick).
Ho infatto risolto come dici te (se è metodo fa un eval e setta il metodo
indicato, altrimenti usa setAttribute), restava il dubbio però su chi dei 2
si comportava correttamente.
-- 
"That until there is no longer first class
And second class citizens of any nation
Until the colour of a man's skin
Is of no more significance than the colour of his eyes
Me say war"
B.M.

 si comportava correttamente.
Ah, ho capito...
Gaetano