2015-08-27 1 views
2

J'ai affecté un événement onmouseover à mon corps html. Cependant, je veux seulement qu'il tire une fois, quand la souris entre dans le corps. Au lieu de cela, il se déclenche à plusieurs reprises, chaque fois que je déplace ma souris dans le corps, même si la souris n'a jamais quitté le corps.Comment empêcher onmouseover d'agir comme onmousemove?

Existe-t-il un moyen d'éviter ces ratés?

Merci

+0

Apprenez tous les événements que vous avez à votre disposition et leurs différences. https://developer.mozilla.org/en/docs/Web/API/Event - https://developer.mozilla.org/en-US/docs/Web/Events –

+0

@mwilson, que voulez-vous dire "les deux " événements? Je ne veux qu'un seul événement. –

Répondre

5

Vous devez utiliser l'événement mouseenter pas mouseover qui sera déclenchée lorsque vous passez d'un élément à.

L'événement est déclenché lorsque mouseenter un dispositif de pointage (généralement une souris) est déplacée sur l'élément qui a l'auditeur joint.

similaires à mouseover, il diffère en ce qu'elle ne bouillonne pas et qu'elle n'est pas envoyé lorsque le pointeur est déplacé d'un à son propre espace physique espace physique de de ses descendants.

document.body.addEventListener('mouseenter', function() { 
 
    snippet.log('mouse entered') 
 
}); 
 
document.body.addEventListener('mouseover', function() { 
 
    snippet.log('mouse over') 
 
});
<!-- Provides the `snippet` object, see http://meta.stackexchange.com/a/242144/134069 --> 
 
<script src="http://tjcrowder.github.io/simple-snippets-console/snippet.js"></script> 
 

 
<div>Soem content <span>within span</span> <button>Button</button></div>