HighDots Forums  

[?] Studi: window/body onload + setAttribute

Javascript (Italian) Il linguaggio JavaScript (it.comp.lang.javascript)


Discuss [?] Studi: window/body onload + setAttribute in the Javascript (Italian) forum.



Reply
 
Thread Tools Display Modes
  #1  
Old   
Cristiano Larghi
 
Posts: n/a

Default [?] Studi: window/body onload + setAttribute - 02-04-2005 , 05:08 AM






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/de...nts/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.

Reply With Quote
  #2  
Old   
ZER0
 
Posts: n/a

Default Re: [?] Studi: window/body onload + setAttribute - 02-04-2005 , 06:24 AM






On Fri, 4 Feb 2005 12:08:50 +0100, Cristiano Larghi wrote:

Quote:
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
E ti serve un oggettino c# per farlo?
E perche' deve generare del codice client?

Quote:
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).
Guarda, a parer mio (leggasi, secondo la mia logica) e' corretto quel che
fa mozilla.
Prima di tutto stiamo parlando di (X)HTML e non XML generico:
A livello di tag, onclick non e' un attributo normale, ma un attributo
collegato all'evento click su quell'elemento. Quando tu, a mano, definisci
in un sorgente (X)HTML un attributo "onclick", stai impostando una funzione
anonima per quell'oggetto, tramite binding. Quindi, allo stesso modo in cui
la scrittura "manuale" di tale attributo generi la funzione, e' corretto
che l'aggiunta di tale attributo via DOM faccia la stessa cosa. Altrimenti
c'e' un'incongruenza.

Quote:
Uso quindi sempre window.onload?
Decisamente.

Quote:
c) setAttribute Opera. Testato con Opera 7.21, ignora completamente
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"


Reply With Quote
  #3  
Old   
Cristiano Larghi
 
Posts: n/a

Default Re: [?] Studi: window/body onload + setAttribute - 02-04-2005 , 06:44 AM



In data Fri, 4 Feb 2005 13:24:06 +0100, ZER0 ha scritto:

Quote:
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

E ti serve un oggettino c# per farlo?
Sì...per farlo in c# e darlo in mano a chi non sa generare javascript lato
client
Quote:
E perche' deve generare del codice client?
Per assegnare onload metodi ed eventi; a quali oggetti lo decidi lato
server con un oggettino ad-hoc.

Quote:
a) setAttribute("onclick","alert('ok')");
Io bellobbello ho fatto quanto sopra con mozilla e MERAVIGLIA funziona.
Sviluppo un po' e passo a IE => ignorato!
Guarda, a parer mio (leggasi, secondo la mia logica) e' corretto quel che
fa mozilla.
Prima di tutto stiamo parlando di (X)HTML e non XML generico:
A livello di tag, onclick non e' un attributo normale, ma un attributo
collegato all'evento click su quell'elemento. Quando tu, a mano, definisci
in un sorgente (X)HTML un attributo "onclick", stai impostando una funzione
anonima per quell'oggetto, tramite binding. Quindi, allo stesso modo in cui
la scrittura "manuale" di tale attributo generi la funzione, e' corretto
che l'aggiunta di tale attributo via DOM faccia la stessa cosa. Altrimenti
c'e' un'incongruenza.
Quindi IE fa correttamente la parte di assegnazione proprietà, ma poi non
effettua il binding...sarà magari collegato ai vari problemi di
createElement etc. Antipatica cosa, comunque, mi avrebbe semplificato la
vita usare setAttribute sia per proprietà che per eventi.

Quote:
c) setAttribute Opera. Testato con Opera 7.21, ignora completamente
proprietà personalizzate.

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.


Reply With Quote
  #4  
Old   
ZER0
 
Posts: n/a

Default Re: [?] Studi: window/body onload + setAttribute - 02-04-2005 , 06:54 AM



On Fri, 4 Feb 2005 13:44:42 +0100, Cristiano Larghi wrote:

Quote:
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

E ti serve un oggettino c# per farlo?
Sì...per farlo in c# e darlo in mano a chi non sa generare javascript lato
client
E perche' deve generare del codice client?
Per assegnare onload metodi ed eventi; a quali oggetti lo decidi lato
server con un oggettino ad-hoc.
Non ne capisco bene l'utilita' posta in questo modo, ma mancandomi il
quadro generale non posso andare oltre.. magari mi spiegherai alla prossima
cena.
Io ho fatto un qualcosa in php per dialogare col documento come se fosse un
"DOM" client, senza usare librerie interne (in quanto non so cosa il server
ha installato); ma non genera nulla di client. Imposta gli attributi
direttamente sul tag da server.

E mi pare che .NET dovrebbe essere in grado nativamente di far questo, no?

[cut]
Quote:
Quindi IE fa correttamente la parte di assegnazione proprietà, ma poi non
effettua il binding...
In pratica, direi di si'.

Quote:
createElement etc. Antipatica cosa, comunque, mi avrebbe semplificato la
vita usare setAttribute sia per proprietà che per eventi.
Per questo farlo lato server e' preferibile. Non c'e' distinzione.

Quote:
Era più una curiosità, se si riusciva a fare un qualcosa del tipo
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)

on air ~ "Gianluca Grignani - Che ne sarà di noi"


Reply With Quote
  #5  
Old   
Cristiano Larghi
 
Posts: n/a

Default Re: [?] Studi: window/body onload + setAttribute - 02-04-2005 , 07:06 AM



In data Fri, 4 Feb 2005 13:54:00 +0100, ZER0 ha scritto:

Quote:
Non ne capisco bene l'utilita' posta in questo modo, ma mancandomi il
quadro generale non posso andare oltre.. magari mi spiegherai alla prossima
cena.
Io ho fatto un qualcosa in php per dialogare col documento come se fosse un
"DOM" client, senza usare librerie interne (in quanto non so cosa il server
ha installato); ma non genera nulla di client. Imposta gli attributi
direttamente sul tag da server.
Sì, ma impostandoli così non viene più validato. In realtà è nato per
togliere gli eventi dai tag e settarli via javascript in uno script a
parte, ma poi mi sono detto "e perché non usarlo anche per proprietà non
standard?"
E' comunque tutto allenamento ("esercizi di stile, diresti te" :-))

Quote:
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.
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.


Reply With Quote
  #6  
Old   
Gaetano Bigliardi
 
Posts: n/a

Default Re: [?] Studi: window/body onload + setAttribute - 02-04-2005 , 07:59 AM



Cristiano Larghi wrote:

Quote:
a) setAttribute("onclick","alert('ok')");
Io bellobbello ho fatto quanto sopra con mozilla e MERAVIGLIA funziona.
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


Reply With Quote
  #7  
Old   
Cristiano Larghi
 
Posts: n/a

Default Re: [?] Studi: window/body onload + setAttribute - 02-04-2005 , 08:02 AM



In data Fri, 04 Feb 2005 14:59:00 +0100, Gaetano Bigliardi ha scritto:

Quote:
Hai provato a fare così come segue?
[CUT]
No, non ho provato...

Quote:
Inoltre ti volevo chiedere: che differenza fa se imposti direttamente
la proprietà al posto di utilizzare setAttribute?

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.


Reply With Quote
  #8  
Old   
Gaetano Bigliardi
 
Posts: n/a

Default Re: [?] Studi: window/body onload + setAttribute - 02-04-2005 , 08:31 AM



Cristiano Larghi wrote:

Quote:
In data Fri, 04 Feb 2005 14:59:00 +0100, Gaetano Bigliardi ha scritto:

Inoltre ti volevo chiedere: che differenza fa se imposti direttamente
la proprietà al posto di utilizzare setAttribute?

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.
Ah, ho capito...

Gaetano


Reply With Quote
Reply




Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off



Powered by vBulletin Version 3.5.4
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.