我需要激发两个事件。一个是当光标进入文档时,另一个是离开文档时。现在我有一个问题,当我在文档中使用光标时,事件也会触发,你可以在我的fiddle控制台中看到这一点。
当我进入和离开文档时,怎么可能只触发事件?
let cursor = document.getElementById('cursor');
function onMousEnter() {
cursor.classList.add('is-active');
console.log("Enter!");
}
function onMouseLeave() {
cursor.classList.remove('is-active');
console.log("Out!");
}
document.addEventListener('mouseover', onMousEnter);;
document.addEventListener('mouseout', onMouseLeave);
const onMouseMove = (e) => {
cursor.style.left = e.pageX + 'px';
cursor.style.top = e.pageY + 'px';
}
document.addEventListener('mousemove', onMouseMove);
https://jsfiddle.net/k81zbdmj/1/
- 使用
mouseenter
而不是mouseover
- 使用
mouseleave
而不是mouseout
它们之间的区别在于mouseenter
和mouseleave
没有气泡。因此,每当您将光标移到子对象上或移出子对象时,这些都不会触发事件。