2009-08-31 5 views
1

Je suis en train d'implémenter un glisser-déposer & en JavaScript (brut). Tout va bien, sauf une chose. Par exemple, dans Firefox (probablement pas seulement là), si vous faites glisser un objet la deuxième fois, il se fait glisser comme une fonctionnalité de navigateur intégré (pour faire glisser & drop image sur le bureau, par exemple, je pense). Eh bien, ce genre de ruine mon script. Il est, je sais que c'est possible, et je l'ai déjà fait auparavant, mais c'était comme si longtemps et je l'ai eu par essais et erreurs, juste entré focus() et blur() partout l'endroit jusqu'à ce qu'il semble perdre réellement le focus. Donc, si quelqu'un sait comment effacer cela pour moi, il serait mon héros personnel. Flou() sur l'objet qui traîne? focus() sur un autre? etc.Ignorer/annuler le glisser-déplacer du navigateur pour glisser-déposer JavaScript

Merci!

// Ok, les parties du code concernant ce serait:

... 
    this.handle.onmousedown = function(e) 
    { 
     self.startDragging(e); 
    }; 
    this.handle.onmouseup = function(e) 
    { 
     self.stopDragging(e); 
    }; 
    setInterval(function(){self.animate()}, 25); 
... 
startDragging: function(e) 
{ 
    this.dragging = true; 
}, 
stopDragging: function(e) 
{ 
    this.dragging = false; 
}, 
animate: function() 
{ 
    if(this.dragging) 
... 
+0

pouvez-vous fournir votre code? –

+0

C'est trop et ça serait déroutant. Imaginez que vous avez un div dans la page, et vous voulez que ce ne soit pas traîner par le navigateur ... – treznik

Répondre

1

À moins que j'ai mal interprété votre question, essayez event.preventDefault(); dans votre écouteur d'événement mousedown. Il serait utile que vous fournissiez des extraits de code pour nous montrer comment vous implémentez le glisser/déposer.

Edit: Avec l'implémentation, quelque chose comme cela devrait fonctionner:

this.handle.onmousedown = function(e) { 
    if(!e) e = window.event; 
    if(e.preventDefault) e.preventDefault(); 
    else e.returnValue = false; 

    self.startDragging(e); 
}; 

Cependant, je vous conseille d'utiliser des écouteurs d'événements à la place.

+0

Hmm, en fait cela fonctionne! Impressionnant. Mais est-ce seulement pour Firefox? – treznik

+0

Eh bien, IE implémente les écouteurs d'événements un peu différemment, vous devrez donc en tenir compte. Je pense que dans IE vous venez de retourner false dans l'événement mousedown. Je vous recommande de lire sur les écouteurs d'événements inter-navigateurs sur quirksmode.org. – Kevin

Questions connexes