Mon ordinateur (et jusqu'à présent, non Un autre ordinateur parmi mes collègues) présente un problème de chrome, c'est-à-dire et safari (mais pas dans Firefox). Simple Mousemove code> Code, tel que ci-dessous (exécuté déjà sur le violon ci-dessus) prend correctement les captures
Mousemove code> événements, mais aussi longtemps que la souris est dans la DIV, attrape un Mousemove Code> Chaque seconde - Même si je ne déplace plus la souris. P>
var number = 0;
$("#foo").on("mousemove", function() { this.innerHTML = number++ });
3 Réponses :
OK, j'ai trouvé le problème, même si je ne comprends pas parfaitement pourquoi c'était un problème. P>
J'ai eu le responsable de la tâche en cours d'exécution en arrière-plan. Et pour une raison quelconque, chaque fois qu'il est mis à jour, cela causait, Safari et Chrome recevaient un événement Mousemove. P>
Cela n'a pas de sens, mais au moins le correctif est simple: fermez le gestionnaire de tâches. P>
(Il est très évident que si vous êtes dans l'onglet Applications. Si vous êtes en performance, cela dépend de ce que les valeurs sont définies.) P>
Avait le même problème. Pour moi, c'était parce que j'avais Flux en cours d'exécution et il changeait actuellement les couleurs d'écran du moniteur.
WTF, c'est exactement ce qui se passe si vous avez un TaskManager ouvert - merci, vous m'avez sauvé beaucoup de temps (et augmentez les poils gris)!
@Kic content que mon temps et mes cheveux gris puissent vous faire économiser quelques-uns. :-)
Avait le même problème; TM fermé et maintenant ça marche. Merci d'avoir sauvé mes cheveux précieux!
J'ai le même problème sur Win Server 2008 / Chrome 36 lorsque le gestionnaire de serveur ou le violoniste est ouvert, chrome mais pas Firefox.
Avait le même problème et Google m'a amené à ce lien que le Fixe fonctionnait. Peut confirmer toujours l'envoi ~ 1 Mousemove toutes les sections avec le responsable de la tâche ouverte à Chrome.
Wow! Réponse incroyable! J'ai vérifié tous mes scripts JS lors de la recherche d'une erreur, je ne pouvais pas penser que le gestionnaire de tâches affecte l'événement IEMOVE.
Pour moi, la cause était heidisql. Ils ont un bouton PayPal Donate qui a changé de texte toutes les 10 secondes et qui déclenche 2 souris.
Merci beaucoup, j'avais le même problème et je ne savais pas pourquoi je n'ai pas vu votre réponse ici. J'ai fermé le chef de la tâche et l'événement de déménagement de la souris a cessé de tirer lorsque le curseur était toujours.
Triste que cela reste un problème 2 ans plus tard. Si vous regardez le lien indiqué par Sebastian dans le commentaire de la question, au moins au 21 juin 2016, il est affecté à une personne à Chromeium.org à réparer, mais pas encore corrigée.
Heureux qu'ils ont finalement réparé cela dans les dernières constructions. Je pensais que je devais devenir fou pendant une minute là-bas.
Au moins, cela fonctionne en chrome maintenant. Merci de nous en informer!
Pour moi, le problème se produit parfois lorsque iTunes joue. Je sais que iTunes (pour Windows) a eu une question de concentration pour les âges - il a tendance à voler concentré sur ses propres fenêtres contextuelles.
Vous avez souligné le problème dans votre réponse (acceptée): D'autres applications peuvent voler la mise au point de la navigateur, tirant Le comme suggéré dans la section Commentaires de la question, veuillez enregistrer la position de la souris et continuer à vérifier si cela a changé. p> exemple de code à l'aide de jQuery: p> (Remarque: vous préférez à l'aide de l'événement espère que cela aide toute personne cogner dans des problèmes similaires. p> edit: forte > Fonctionnalité supplémentaire pour séparer les événements de souris des événements tactiles basés sur le commentaire de Scott ci-dessous: P> MouseMove code> événement à volonté. Toutefois, pour un site Web en direct, nous ne pouvons pas supposer qu'un utilisateur n'exécute pas certains programmes tels que le gestionnaire de tâches ou iTunes. P>
touchmove code> avec le
touche code> et
modifiéTouches code> des tableaux pour les gestes tactiles.) p>
var old_pos = [0, 0];
$(el).on("mousemove touchmove", function(e) {
var new_pos = [e.clientX, e.clientY];
// Quit if the mouse position did not change.
if(e.type == "mousemove" && old_pos[0] == new_pos[0] && old_pos[1] == new_pos[1])
return;
// Your code.
});
Merci pour vos informations supplémentaires. Juste pour clarifier la circonstance que j'avais - nous voulions faire une partie de notre codes avec les événements de la souris / touch, alors n'avait que quelque chose en attrapant les événements tactiles et les transmettre en tant qu'événement de la souris. Étant donné qu'un clic de souris simulé incendie un mouvement et un événement de MouseDown, nous avons dû permettre à des événements de déplacement avec 0 mouvement.
Logique. J'aurais probablement essayé de travailler autour de lui, par exemple en écoutant pour les deux MouseMove Code> et
TouchMove CODE> et les séparant via
e.type code> à l'intérieur de l'événement Auditeur (voir mon poste édité ci-dessus). Depuis les deux
MOUSEDOWN CODE> et
MOUSEMOVE CODE> FIRE en même temps, une autre solution pourrait être d'ajouter un auditeur d'événement pour
MouseDown code>, enregistrez les coordonnées de démarrage et ne pas en tenir compte. le
Mousemove initial code>. Quoi qu'il en soit, vous avez déjà résolu le problème. Celles-ci ne sont donc que quelques idées pour la prochaine fois que vous rencontrez des problèmes d'événement de la souris.
Merci pour l'addition. Il existe définitivement des moyens de contourner la question (bien que cela aurait besoin de changer de code dans de nombreux endroits pour gérer une affaire extrêmement Edge), mais la plus grande affaire pour nous trouvait la cause fondamentale. Tant que nous connaissons la cause fondamentale, nous disons parfaitement heureux de dire au client de cesser d'utiliser Gestionnaire de tâches - ou iTunes. :-)
J'ai fait face au même problème. Pour Pure JavaScript, j'ai remplacé Onmousemove avec Onmouseover. Pour JQuery, j'ai remplacé MouseMove avec Mouseover. Correction la plus rapide pour moi. P>
C'est génial, si vous n'avez pas besoin de l'événement Mousemove. Malheureusement, j'avais besoin de la MouseMove, de sorte que Mouseover n'était pas d'aide.
Je ne peux pas reproduire ça ...
Il pourrait être possible de contourner la question en sauvegarde la position de la souris et en vérifiant si la position est en effet différente avant de faire tout ce qui doit être fait.
Avez-vous envisagé un problème matériel avec votre appareil de pointeur?
Par hasard utilisez-vous une sorte de programme de conservation qui défait l'économiseur d'écran? Ou quelque chose d'autre que mon émission d'un mouvement de souris chaque seconde? Essayez d'éliminer les programmes de fond une à la fois pour voir si vous pouvez résoudre le problème.
@sabof merci, que ce que j'ai essayé, mais nous avons en fait des cas d'utilisation où il est possible que nous souhaitons que l'événement se déclenche lorsque la position soit la même (par exemple deux conteneurs différents sur un écran tactile, en cliquant sur une autre, puis le D'abord dans la même position exacte - dans ce cas, nous ignorerions l'événement Mousemove du clic.)
@chrmod j'ai essayé 3 souris différentes, dans tous les différents ports. Et l'économiseur d'écran fonctionne, il n'est donc pas un problème de niveau système. Et Firefox fonctionne (ou est assez intelligent pour attraper les événements continus).
@Devlshone Je n'ai pas délibérément géré de manière délibérée de garde-vie et, en fait, l'économiseur d'écran frappe. Entre cela et le fait que cela fonctionne correctement dans Firefox, je pense que c'est un problème de navigateur.
Peut-être qu'un plugin dans Firefox le rend non brisé car tous les autres navigateurs semblent être affectés.
@Devlshone J'aime cette idée, mais mes plugins sont tous très standard, et le code fonctionne toujours dans Firefox lorsque je désactive mes deux extensions de développeurs (Firebug et GWT)
Nous avons trouvé le même problème dans notre WebApp et nous l'avons signalé à l'équipe de Chrome. Ils ont confirmé le problème: veuillez voter ici pour l'avoir corrigé .
Au 30 janvier 2017, ce problème est marqué comme fixé dans Chrome. Je n'ai pas vérifié IE, Edge ou Safari pour voir si elles répètent le problème, cependant.