Newsgroup: it.comp.lang.javascript
Titolo: initialize

Questo è il listato di un piccolo file js il cui codice parte quando una pagina html viene caricata.
 
/*************************************************************************************
var dragobject={
z: 0, x: 0, y: 0, offsetx : null, offsety : null, targetobj : null, dragapproved : 0,
initialize:function(){
document.onmousedown=this.drag
document.onmouseup=function(){this.dragapproved=0}
},
drag:function(e){
var evtobj=window.event? window.event : e
this.targetobj=window.event? event.srcElement : e.target
if (this.targetobj.className=="drag"){
this.dragapproved=1
if (isNaN(parseInt(this.targetobj.style.left))){this.targetobj.style.left=0}
if (isNaN(parseInt(this.targetobj.style.top))){this.targetobj.style.top=0}
this.offsetx=parseInt(this.targetobj.style.left)
this.offsety=parseInt(this.targetobj.style.top)
this.x=evtobj.clientX
this.y=evtobj.clientY
if (evtobj.preventDefault)
evtobj.preventDefault()
document.onmousemove=dragobject.moveit
}
},
moveit:function(e){
var evtobj=window.event? window.event : e
if (this.dragapproved==1){
this.targetobj.style.left=this.offsetx+evtobj.clientX-this.x+"px"
this.targetobj.style.top=this.offsety+evtobj.clientY-this.y+"px"
return false
}
}
}
 
dragobject.initialize()
 
***********************************************************************************/
 
 
Non c'è un modo per EVITARE che questo accada?
Cioe' non si puo' sostituire a quel maledetto initialize un tasto che premo quando voglio io e faccio partire questo codice quando voglio io?? Questo "initialize" mi da un fastidio mostruoso.
 
Grazie

 premo quando voglio io e faccio partire questo codice quando voglio io??
 
Eseguire initialize quando vuoi te?

Certo. Evitare che queste righe di codice partano insieme al caricamento della pagina. Eseguirle in un secondo momento, DOPO che la pagina e' stata caricata .


Non ho capito il fastidio che ti dà. initialize() definisce solo due 
event listener.
 
Cerca di spiegare meglio il tuo problema.
 
Bye.

Ciao,
ometti l'ultima riga di codice:  dragobject.initialize()
 
Richiama la funzione all'evento che vuoi tu  (per esempio al click di un 
pulsante: onClick="dragobject.initialize();"
 

 Cerca di spiegare meglio il tuo problema.
 
Ok ci provo ma mi sa che è impossibile. In parole (molto) povere.
 
Ho un foglio HTML al cui <body onload> faccio partire una funzione js che utilizza scriptaculous (in particolare fa l'effetto "fade in" in entrata su diciamo 10 div distinti, identificati ognuno da un ID univoco). I 10 div (che contengono essenzialmente delle immagini) appaiono magicamente in sequenza, come voglio io.
 
E fin qui ok.
Questi 10 div hanno il "display: none;" perchè questo è richiesto dallo script "fade in".
 
Subito dopo che questi 10 div sono apparsi sullo schermo (al caricamento della pagina), io vorrei che questi stessi 10 div si potessero DRAG&DROPpare (cioè spostare sul video con il trascinamento).
 
E qui c'è il problema.
La funzione drag&drop (non presa da scriptaculous, ma da 
dynamicdrive.com
) agisce sui 10 div. Se NON metto l'onload con la funzione js "fade in" allora il drag&drop (al caricamento della pagina) funziona egregiamente. 
Se invece PRIMA carico "fade in" all'onload... DOPO il drag&drop NON FUNZIONA manco per il ..zzo. Tutto rimane immobile e non droppabile nè draggabile.
 
Ho paura che i problemi siano essenzialmente 2:
 
- i 10 div nel codice html sono "display: none;", quindi non ci sono proprio, e questo il drag&drop non lo ammette.
- la funzione "initialize" mi crea qualche problema..
 
Strano che non se ne possa venire a capo.
 
Lo so che mi sono espresso da cani ma tant'è.

 proprio, e questo il drag&drop non lo ammette.
Questo lo verifichi facile: non fai partire il fadein ma cambi il 
display:none con firebug o simile. Poi guardi se il drag funziona.Se non va 
è la routine del d&d che non ammette un oggetto hidden, altrimenti hai un 
problema sulla init.
Sicuro che i 2 script siano compatibili (ovvero quando salti la initialize 
carichi comunque scriptacolous?)
 
 
-- 
Roberto Tagliaferri-Linux user #30785 <-> r.tagliaferri@(forse)
tosnet.it
 
www.robyt.eu
 

 carichi comunque scriptacolous?)
 
Io so solo che scriptaculous viaggia benissimo SEMPRE E COMUNQUE all'onload.
E' il drag&drop che non va mai quando c'è "fadein".
N.B.: Io ho un bisogno smodato che il "fadein" parta al caricamento della pagina.
 
Forse chi ha fatto il codice del d&d non pensava che i div da sottoporre a d&d dovessero essere preventivamente manipolati.
 
Comunque, giusto perchè c'ho tempo da perdere, vi linko il d&d incriminato...è la solita pagina dynamicdrive
Si sa mai....
 
http://www.dynamicdrive.com/dynamicindex4/image3.htm
 
 
Grazie

 none;"
Non hai capito:
togli la init
lasci il display:none
carichi la pagina (che quindi sarà senza immagini)
con firebug cambi la proprietà di una immagine  da display:none a 
display:block
provi il d&d


 appaiono magicamente in sequenza, come voglio io.
 
[CUT]
questo effetto "fade in" ha una callback al termine? basta mettere il 
tuo .inizialize() nella callback dell'ultimo fade-in.