2010-03-11 7 views
3

Je travaille sur une galerie de diapositives pour le moment. Mon problème est que lorsque je clique sur les divs de navigation très rapidement, le comportement par défaut des navigateurs est déclenché (sélection du contenu).JavaScript supprime le double clic de sélection

Ma question est: comment puis-je supprimer le comportement de double-clic par défaut?

navigationDiv.onclick = function() { 
    // do something 
}; 

Une solution jQuery serait également appropriée puisque je l'utilise.

Merci d'avance!

Répondre

7
$("yourselector").dblclick(function(){ 
    return false; 
}); 

Vous pouvez également utiliser event.preventDefault()

$("yourselector").dblclick(function(event){ 
    event.preventDefault(); 
}); 
+10

Je n'arrive pas à faire fonctionner ça. L'événement se déclenche correctement, mais ni les instructions * return false * ni * event.preventDefault() * n'empêchent Firefox de cliquer deux fois sur le contenu. – Atli

+1

Ne fonctionne pas dans Chrome – xzdead

1

La mise à return false; à la fin du gestionnaire d'événements devrait être capable de supprimer le comportement de sélection par défaut.

+0

d'accord, cela fonctionne dans tous les navigateurs acceptent dans Firefox ... aucune idée pourquoi? – n00b

+0

navigationDiv.style.MozUserSelect = "aucun" fixe dans firefox – n00b

0

Vous pourriez essayer de rendre le retour d'événement "dblclick" faux?

$('.someStuff').bind('dblclick', function() { return false; }); 
0

Annuler l'événement ondblclick:

navigationDiv.ondblclick = function() { 
    return false; // cancel default 
}; 

http://www.quirksmode.org/js/events_mouse.html

+0

copie: d'accord, cela fonctionne dans tous les navigateurs accepter dans firefox ... une idée pourquoi? – n00b

+0

Cochez ma réponse pourquoi ... 'return false' ne fonctionne pas pour les moteurs Mozilla.Au lieu de cela, arrêtez l'exécution de l'événement au lieu de la fonction. –

3

Vous pouvez essayer de désactiver l'événement onselectstart de l'élément cible.

navigationDiv.onselectstart=function(){return false} 

Vous ne savez pas s'il s'agit d'un navigateur compatible x. (Je vais vérifier) ​​

Modifier
avère que c'est un événement IE uniquement. Pour accomplir la même chose dans Mozilla, vous devez désactiver le style CSS -moz-user-select. JavaScript qui serait:

navigationDiv.style.MozUserSelect="none" 

Pour être honnête, je pense que vous seriez mieux désactiver l'événement double-cliquez sur, comme décrit dans les autres commentaires ici.

+2

Le seul problème avec ceci est si un utilisateur veut réellement sélectionner quelque chose en utilisant la mise en surbrillance de clic, vous annulez également cette action. –

+0

True. Je ne l'utiliserais pas moi-même pour cette raison, mais c'est * une option si tout le reste échoue. – Atli

+0

sweet, navigationDiv.style.MozUserSelect = "none" en combinaison avec return false, fonctionne maintenant dans tous les navigateurs! Je vous remercie! – n00b

0

assez simple:

navigationDiv.ondblclick = function (event) { 
    // do something 
    if (!event) event = window.event; 
     if (event.preventDefault) 
      event.preventDefault(); 
     else 
      event.returnValue = false; 

}; 

Cela fonctionne sur les navigateurs IE et Mozilla.

+1

Ne fonctionne pas dans Chrome – Domi

3

Juste Pour votre information, dans Firefox et Safari/Chrome, la sélection peut être désactivée via CSS, aussi:

.navigationDiv { 
    -moz-user-select: none;    
    -webkit-user-select: none; 
} 

Je pense que cela est plus simple quand votre but est seulement d'empêcher les sélections d'avoir lieu sur un certain élément.

+2

Un peu plus à ce sujet ici: https://developer.mozilla.org/fr/CSS/user-select – lazysoundsystem

Questions connexes