Comment puis-je détecter lorsque la souris sort de la fenêtre?
Je veux être en mesure de détecter lorsque la souris sort de la fenêtre afin que je puisse arrêter les événements de tir, tandis que l'utilisateur de la souris est ailleurs.
Toutes les idées de comment faire cela?
- Découvrez ce beeker sortie d'intention de github de la bibliothèque. C'est génial. github.com/beeker1121/exit-intent-popup
- Utiliser mouseleave pour empêcher le tir sur tous les éléments comme le mouseout ne: Très bonne explication et support: developer.mozilla.org/en-US/docs/Web/API/Element/...
- Définition de l'événement sur le document - pas de document.corps pour éviter les incendies abowe barre de défilement. Windows barre de défilement semblent réduire le corps.
Vous devez vous connecter pour publier un commentaire.
Ce type de comportement est généralement nécessaire lors de l'exécution de glisser-déposer comportement sur une page html. La solution ci-dessous a été testé sur IE 8.0.6, FireFox 3.6.6, Opéra 10.53, et Safari 4 sur un MME ordinateur Windows XP.
D'abord un peu de fonction de Peter-Paul Koch; croix-navigateur gestionnaire d'événement:
Et ensuite utiliser cette méthode pour joindre un gestionnaire d'événements pour les objets document mouseout événement:
Enfin, voici une page html avec le script intégré à des fins de débogage:
Si vous utilisez jQuery, comment à ce sujet court et doux code -
Cet événement va déclencher à chaque fois que la souris n'est pas dans votre page comme vous le souhaitez. Il suffit de changer la fonction de faire ce que vous voulez.
Et vous pouvez également utiliser:
À déclencher lorsque la souris entre dans le dos de la page à nouveau.
Source: https://stackoverflow.com/a/16029966/895724
Cela fonctionne pour moi:
addEvent
?if (!evt.toElement && !evt.relatedTarget)
Afin de détecter mouseleave sans prendre en compte la barre de défilement et de la autcomplete champ ou d'inspecter :
Conditions explications:
Aucune de ces réponses a fonctionné pour moi. Je suis maintenant à l'aide de:
Je suis en utilisant ce pour un glisser-déposer de fichier téléchargement de widget. Ce n'est pas tout à fait exact, étant déclenchée lorsque la souris arrive à une certaine distance à partir du bord de la fenêtre.
À l'aide de la onMouseLeave événement empêche bouillonnante et vous permet de détecter facilement lorsque la souris sort de la fenêtre du navigateur.
http://www.w3schools.com/jsref/event_onmouseleave.asp
document.onmouseleave = function() { alert('You left!') };
Utilisez pas le document.corps que les feux de abowe les barres de défilement qui rétractable du corps! Code pour prévenir les incendies sur des éléments n'est pas nécessaire. Bonne explication: developer.mozilla.org/en-US/docs/Web/API/Element/...Je reprends ce que j'ai dit. Il est possible. J'ai écrit ce code, fonctionne parfaitement.
fonctionne dans chrome, firefox, opéra. N'est-ce pas testé sous IE, mais supposons qu'il fonctionne.
modifier. IE comme toujours source de problèmes. Pour le faire fonctionner sous IE, remplacer les événements à partir de la fenêtre de document:
les combiner pour crossbrowser coup de pied au cul curseur de détection o0 😛
J'ai essayé tous les ci-dessus, mais rien ne semble fonctionner comme prévu. Après un peu de recherche, j'ai trouvé que e.relatedTarget est le html juste avant de la souris sort de la fenêtre.
Donc ... je me suis retrouver avec ceci:
S'il vous plaît laissez-moi savoir si vous trouvez des problèmes ou des améliorations !
2019 mise à Jour
(comme user1084282 découvert)
relatedTarget
est nulle lorsque la souris sort de la fenêtre. Inspiré par @user1084282 réponse, changer à cela:if(!e.relatedTarget && !e.toElement) { ... }
et il fonctionneif(!e.relatedTarget && !e.toElement)
à la place de l'état dans la réponse exacte. Il détecte la souris quitter le corps du document.appliquer ce css:
Cela garantit que le code html de l'élément prend toute la hauteur de la fenêtre.
appliquer cette jquery:
Le problème avec mouseover et mouseout, c'est que si vous passez la souris sur l'entrée/sortie de html d'un élément enfant, il déclenche l'événement. La fonction que j'ai donné n'est pas mis hors tension lorsque le pointeur de la souris sur un élément enfant. Il s'éteint lorsque le pointeur de la souris hors/en de la fenêtre
juste pour que vous savez que vous pouvez faire pour que lorsque l'utilisateur passe la souris dans la fenêtre:
Peut-être si vous êtes constamment à l'écoute des OnMouseOver dans la balise body, puis de rappel lorsque l'événement n'est pas provoqués, mais, comme Zack, cela peut être très laid, parce que pas tous les navigateurs de gérer les événements de la même manière, il est même possible que vous perdez le passage de la Souris, même en étant sur une div dans la même page.
Peut-être que cela aidera certains de ceux qui viennent ici plus tard.
window.onblur
etdocument.mouseout
.window.onblur
est déclenché lorsque:Ctrl+Tab
ouCmd+Tab
.Fondamentalement, chaque fois QUE le navigateur onglet perd le focus.
document.mouseout
est déclenché lorsque:Ctrl+Tab
ouCmd+Tab
.Fondamentalement, en tout cas lorsque le curseur quitte le document.
Cela peut être très orthodoxe, mais il ne sera déclenchée que lorsque la souris sort de la fenêtre. J'ai gardé la capture de l'enfant événements et ce résolues, il
Cela a fonctionné pour moi. Une combinaison de certaines de ses réponses ici. Et je l'ai inclus le code montrant un modèle qu'une seule fois. Et le modèle s'en va quand on clique n'importe où ailleurs.
J'ai essayé l'un après l'autre et à trouver la accepté de répondre à abowe qui fonctionne réellement!
https://stackoverflow.com/a/3187524/985399
- Je me passer de vieux navigateurs, donc j'ai fait un code plus court pour fonctionner sur les navigateurs modernes IE9+:
JS:
Ici, vous voyez les prise en charge du navigateur
Mais "mouseout" trigg sur tous les éléments dans le document. Code de l'empêcher de se produire est éliminé par mouseleave (IE5.5+ se lien).
Suivants du code du travail à la fois sur de la souris-le congé et glisser la libération à l'extérieur de document:
JS:
N'ont pas l'événement sur
document.body
parce que les fenêtres de la barre de défilement peut rétrécir et de feu abowe le défilement.Je n'ai pas testé, mais mon instinct serait de faire un OnMouseOut appel de fonction sur la balise body.
Cela fonctionne dans chrome,