2010-12-06 16 views
0
function ganttChart(gContainerID) { 

    this.gContainer = document.getElementById(gContainerID); 
    this.gCurrentMouseX; 
    this.gCurrentMouseY; 

    this.gAttatchMove = function(self) { 

     self.gContainer.onmousemove = function() { 


      if (self.gIsDraggingBar) { 

       self.gUpdateMousePos(); 
       self.gBarBeingDragged.style.left = (self.gBarStartX - (self.gMouseStartX - self.gCurrentMouseX)) + "px"; 
      } 

     }; 

     self.gContainer.onmouseup = function() { 
      self.gIsDraggingBar = false; 
     }; 

    } 
    var self = this; 
    this.gAttatchMove(self); 

    // Update mouse coords 
    this.gUpdateMousePos = function(evt) { 
     if (window.event) { 
      this.gCurrentMouseX = event.x; 
      this.gCurrentMouseY = event.y; 
     } 
     else { 
      this.gCurrentMouseX = evt.x; 
      this.gCurrentMouseY = evt.y; 
     } 
    } 

Cela fonctionne bien dans Chrome, mais FF jette l'erreur:Javascript 'EVT est undefined', mais fonctionne dans Chrome

evt is undefined

Répondre

1

Vous devez passer l'événement mousemove dans this.gUpdateMousePos():

self.gContainer.onmousemove = function(evt) { 
    if (self.gIsDraggingBar) { 
     self.gUpdateMousePos(evt); 
     // And the rest follows here 
    } 
}; 

IE fournit uniquement l'événement en cours via window.event. Firefox ne le fournit que via un paramètre passé dans la fonction gestionnaire d'événements (que vous ne transmettiez pas, d'où l'erreur). Chrome et Safari font les deux (d'où aucune erreur dans Chrome).