Unusable links with onmouseover() 흥미로운 질문을 받았는데 대답하려고했을 때. 몇 가지 로깅 실험 후 http://jsfiddle.net/RnGxP/1/을 설정했습니다. 마지막 두 예제는 예상대로 작동하며 "닫기"를 클릭하거나 "닫기"div를 닫을 때 숨 깁니다.onmouseover click 및 mouseout 이벤트가 시작되기 전에 해지 하시겠습니까?
첫 번째 두 예제는 마우스가 움직일 때마다 으로 새 innerHTML
을 설정합니다. (나는 결코 그렇게하지 않을 것이지만 ...). 그래서 마우스를 움직이면 마우스가 확장됩니다. 링크 또는 "닫기"div에서 마우스를 계속 움직이면 더 많은 이동 이벤트가 시작됩니다.
그러나 두 번째 예제의 닫기 버튼을 클릭하면 마우스를 움직이지 않고 클릭 이벤트 대신 두 번의 mousemove 이벤트가 발생합니다! 정확히 여기서 어떻게됩니까?innerHTML
을 재설정 할 때 클릭 이벤트가 어떤 식 으로든 잃어 버렸음을 알 수 있습니까? (대상을 잃어 버렸습니까?) 그러나 앞에 mousemove 이벤트 이 왜 발생합니까?
좋아, 그게 mouseout에 대한 동작을 설명 할 수 있습니다. 그러나 내가 정말로 궁금한 점은 클릭 이벤트 (두 번째 div)입니다. 이동하지 않고 클릭하면 콘솔 (?)에서 볼 수있는 것처럼 두 개의 mousemove 이벤트가 트리거되지만 클릭 핸들러 (?)에서는 경고가 표시되지 않습니다. – Bergi
@Bergi mouseout 이벤트 핸들러는 부모의 표시된 속성을 false로 설정하려고합니다. 그러나 부모의 mouseover 이벤트 핸들러가이를 제거했기 때문에 부모가 없습니다. 따라서 클릭 핸들러는 null 참조 예외를 발생시킵니다. (적어도, 그것은 여기에서한다.) – Neil