JQuery $(window).focusout problème
le problème est, je suis en train de faire un programme comme un chat, qui a besoin de savoir si l'utilisateur a quitté la fenêtre, ou modifié à l'autre fenêtre ou un autre onglet, afin de permettre aux autres utilisateurs de voir que l'autre utilisateur ne voit pas la page dès maintenant.
Je pensais que la fenêtre de l'événement focusout permettrait de résoudre mes problèmes, cependant, il ya quelques problèmes avec elle.
D'abord:
il ne se déclenche que lorsque l'utilisateur quitte la fenêtre, si ils se concentrent sur un champ de saisie puis cliquez n'importe où ailleurs dans la page, l'événement se déclenche. Évidemment, c'est intolérable.
J'ai réussi, dans Firefox, un moyen de contourner cela. Sur Firefox, quand cela arrive, le navigateur déclenche l'événement focusout une fois. Si vous vraiment quitter la fenêtre toutefois, il se déclenche deux fois. Donc, un peu de la programmation de la magie.
Puis vint le deuxième problème:
Chrome, et je crois que d'autres navigateur peut se comportent de la même, seuls les feux de focusout événement une fois, peu importe ce que vous faites. Quittant la fenêtre, un changement d'orientation de la contribution de la page, c'est la même chose, donc, ma programmation n'a pas travaillé.
Que quelqu'un connait un moyen de simuler le comportement souhaité? Ou une façon de faire de google Chrome et d'autres navigateur possible de se comporter comme Firefox ou autre chose?
Merci à tous!
Avez-vous essayé
$(document).bind("mouseleave", function(){...})
?Le
window.onblur
gestionnaire fonctionne très bien. Le flou de l'événement se déclenche à l'objet de la fenêtre à chaque fois que l'utilisateur passe à un autre onglet.Vidas eh bien, j'ai eu des problèmes avec elle, mais c'était il y a quelques temps et je n'ai pas essayé ces derniers temps. Si cela fonctionne, alors c'est une bonne nouvelle pour l'OP au moins 🙂
Ouais, qui fonctionne comme Šime triste qu'il le ferait.
OriginalL'auteur Uriel Bertoche | 2011-02-28
Vous devez vous connecter pour publier un commentaire.
Utilisation
blur
au lieu defocusout
:La différence est quefocusout
bulles remonter l'arbre du DOM etblur
ne l'est pas. Si vous définissezfocusout
sur l'objet de la fenêtre, puis tout le flou des événements qui se produisent sur les éléments de la page également déclencher que gestionnaire qui est quelque chose que vous ne voulez pas.La différence est que
focusout
(lorsqu'il est défini sur l'objet window) capte tout flou événements qui le feu sur la page (à n'importe quel élément). En revancheblur
(lorsqu'il est défini sur l'objet window) ne capture pas ceux flou événements.Démo Live: http://jsfiddle.net/simevidas/taRG6/
J'ai pensé que jQuery serait déjà utiliser le flou pour Firefox et Chrome et focusout forme c'est à dire, qui semblait avoir un problème avec ça.
focusout et le flou sont deux différents types d'événements (tous deux définis dans le DOM 3 Événements spec). jQuery ne pas les mélanger ensemble.
OriginalL'auteur Šime Vidas
Fait cette réponse? Les pourparlers au sujet de l'utilisation du flou de l'événement
JavaScript /jQuery: Tester si la fenêtre a le focus
OriginalL'auteur jenson-button-event
De répondre à la question,
cette solution fonctionne parfaitement sauf que j'ai capture l'événement deux fois.
FLOU événement sur fenêtre est déclenché uniquement lorsque je clique sur un autre navigateur onglet ou lorsque je passe à une autre application.
OriginalL'auteur Rémy THEROUX