Newsgroup: it.comp.lang.javascript
Titolo: mttere tutti d'accordo

ho 2 script, uno fuziona sempre sia che sia caricato prima o dopo o
eseguito prima o dopo.
l'altro script funziona solo se eseguito prima, se viene eseguito
prima l'altro non funziona il secondo gli fotte gli eventi del mouse
qualche idea ?
c'e' una soluzione ? un debug per javascript in questo caso dove lo trovo?

 idea ?
Puoi usare addEventListener/attachEvent, che permette eventi multipli (se 
"gli fotte gli eventi" immagino sia perché usa la sintassi 
evento=function, che sovrascrive)
Ovviamente occorre capire se ciò va bene nel contesto. Attenzione che IE, 
con eventi multipli, da documentazione li scatena in ordine random, da 
pratica io vedo che li esegue sempre al contrario di firefox.

 
posto lo script "criminale"
var Drag = {
// z : new Array(),
obj : null,
init : function(o, minX, maxX, minY, maxY, db ,fnc)
{
o.onmousedown = Drag.start;
// o.hmode			= bSwapHorzRef ? false : true ;
// o.vmode			= bSwapVertRef ? false : true ;
o.hmode			= true;
o.vmode			= true ;
if(!fnc){
   fnc = null;
}
o.fnc = fnc;
if(!db && db!=0){
     db = null;
}
o.db = parseInt(db);
// o.root = oRoot && oRoot != null ? oRoot : o ;
if (o.hmode  && isNaN(parseInt(o.style.left  ))) o.style.left   = "0px";
if (o.vmode  && isNaN(parseInt(o.style.top   ))) o.style.top    = "0px";
if (!o.hmode && isNaN(parseInt(o.style.right ))) o.style.right  = "0px";
if (!o.vmode && isNaN(parseInt(o.style.bottom))) o.style.bottom = "0px";
o.minX	= typeof minX != 'undefined' ? minX : null;
o.minY	= typeof minY != 'undefined' ? minY : null;
o.maxX	= typeof maxX != 'undefined' ? maxX : null;
o.maxY	= typeof maxY != 'undefined' ? maxY : null;
o.onDragStart	= new Function();
o.onDragEnd	= new Function();
o.onDrag		= new Function();
},
start : function(e)
{
var o = Drag.obj = this;
//e = Drag.fixE(e);
// il destro non sposta gli elementi
if (e.which == 3 || e.which == 2){
     return;
}
var y = parseInt(o.vmode ? o.style.top  : o.style.bottom);
var x = parseInt(o.hmode ? o.style.left : o.style.right );
o.onDragStart(x, y);
o.lastMouseX	= e.clientX;
o.lastMouseY	= e.clientY;
if (o.hmode) {
if (o.minX != null)	o.minMouseX	= e.clientX - x + o.minX;
if (o.maxX != null)	o.maxMouseX	= o.minMouseX + o.maxX - o.minX;
} else {
if (o.minX != null) o.maxMouseX = -o.minX + e.clientX + x;
if (o.maxX != null) o.minMouseX = -o.maxX + e.clientX + x;
}
if (o.vmode) {
if (o.minY != null)	o.minMouseY	= e.clientY - y + o.minY;
if (o.maxY != null)	o.maxMouseY	= o.minMouseY + o.maxY - o.minY;
} else {
if (o.minY != null) o.maxMouseY = -o.minY + e.clientY + y;
if (o.maxY != null) o.minMouseY = -o.maxY + e.clientY + y;
}
document.onmousemove	= Drag.drag;
document.onmouseup		= Drag.end;
return false;
},
drag : function(e)
{
var o = Drag.obj;
var ey	= e.clientY;
var ex	= e.clientX;
var y = parseInt(o.vmode ? o.style.top  : o.style.bottom);
var x = parseInt(o.hmode ? o.style.left : o.style.right );
var nx, ny;
if (o.minX != null) ex = o.hmode ? Math.max(ex, o.minMouseX) :
Math.min(ex, o.maxMouseX);
if (o.maxX != null) ex = o.hmode ? Math.min(ex, o.maxMouseX) :
Math.max(ex, o.minMouseX);
if (o.minY != null) ey = o.vmode ? Math.max(ey, o.minMouseY) :
Math.min(ey, o.maxMouseY);
if (o.maxY != null) ey = o.vmode ? Math.min(ey, o.maxMouseY) :
Math.max(ey, o.minMouseY);
nx = x + ((ex - o.lastMouseX) * (o.hmode ? 1 : -1));
ny = y + ((ey - o.lastMouseY) * (o.vmode ? 1 : -1));
Drag.obj.style[o.hmode ? "left" : "right"] = nx + "px";
Drag.obj.style[o.vmode ? "top" : "bottom"] = ny + "px";
Drag.obj.lastMouseX	= ex;
Drag.obj.lastMouseY	= ey;
Drag.obj.onDrag(nx, ny);
return false;
},
end : function(){
      document.onmousemove = null;
      document.onmouseup   = null;
      var l = parseInt(Drag.obj.style[Drag.obj.hmode ? "left" : "right"]);
      var h = parseInt(Drag.obj.style[Drag.obj.vmode ? "top" : "bottom"]);
      eval( Drag.obj.fnc + '(' + l + ',' + h + ',\'' + Drag.obj.db +
'\')' );
      Drag.obj = null;
}
};
nel html ho questa:
document.onmousemove	= function(e){
      //euEnv.onmousemoveBK = document.onmousemove;
      //document.onmousemove  =
      on_MouseMove(e);
      var tempX = e.pageX;
      var tempY = e.pageY;
      document.getElementById('dbg').innerHTML=tempX + '/' + tempY;
}
dbg cambia fino a quando non eseguo il Drag. da quel momento
i numeri non cambiano e l'altro script si blocca


 o.onmousedown = Drag.start;
ecco, con tutti gli eventi (come questo) prova ad usare addEventListener 
(altri browser)/attachEvent (IE) (e auguri, visto lo script :-/)

 (altri browser)/attachEvent (IE) (e auguri, visto lo script :-/)
puoi sempre consigliare di meglio