Unusable links with onmouseover() bekam eine interessante Frage, als ich versuchte, sie zu beantworten. Nach einigen Protokollierungsexperimenten habe ich http://jsfiddle.net/RnGxP/1/ eingerichtet. Die letzten beiden Beispiele funktionieren wie erwartet, das Ausblenden beim Klicken auf "Schließen" oder das Verlassen des "Schließen" -Divs.OnMouseOver ausgelöst vor Click und MouseOut Events?
Die ersten beiden Beispiele setzen eine neue innerHTML
an die div , wenn die Maus sich bewegt (ich würde das nie selbst tun, aber ...). Also, wenn Sie die Maus in eine von ihnen bewegen, werden sie erweitert. Bewegen Sie die Maus weiter über einen Link oder das "Schließen" -Div, werden mehr Bewegungsereignisse ausgelöst.
Aber dann, klicken Sie auf den Schließen-Button im zweiten Beispiel - ohne die Maus zu bewegen - anstelle eines Klickereignisses werden zwei Mauszeiger-Ereignisse ausgelöst! Was genau passiert hier? Ich kann verstehen, dass das Klickereignis auf irgendeine Weise verloren geht (sein Ziel verloren?), Wenn innerHTML
zurückgesetzt wird, aber warum wird das mousemove-Ereignis ausgelöst vor?
OK, das könnte das Verhalten für Mouseout erklären. Aber was mich wirklich neugierig gemacht hat, ist das Klick-Event (zweites div). Durch Klicken ohne Bewegung werden zwei mousemove-Ereignisse ausgelöst, wie in der Konsole (?) Zu sehen ist, aber keine Warnung von einem Klick-Handler (?). – Bergi
@Bergi Ihr Mouseout-Ereignishandler versucht, die angezeigte Eigenschaft des übergeordneten Objekts auf false zu setzen. Aber es hat kein Elternteil, weil der Mouseover-Event-Handler seiner Eltern es entfernt hat. Daher gibt der Click-Handler eine Null-Referenzausnahme aus. (Zumindest macht es das hier.) – Neil