您可以使用mousemove事件。这会在用户移动鼠标时触发。所以如果用户根本不移动鼠标,那么触发器的唯一不触发事件就是罕见的。
唯一的问题是,只要鼠标移动到图像上,该事件就会触发,因此您将在组件上获得很多这些事件。您可能需要做的是在事件触发时在您的方法中实施某种标志。事件第一次触发时,您可以打开标志,并在离开组件时将其关闭。
这并不理想,但我认为这可能会满足您的问题场景。以下是关于该解决方案的一些快速伪代码,我认为它应该可行。
<img src="blah.png" onmousemove="JavaScript:triggerOn(event)" onmouseout="JavaScript:triggerOff(event)"/>
...
<script type='text/javascript'>
var TriggerActive = false;
function triggerOn(e){
e = e||window.e;
if(!TriggerActive){
TriggerActive = true;
// Do something
} else {
// Trigger already fired, ignore this event.
}
}
function triggerOff(e){
e = e||window.e;
if(TriggerActive)
TriggerActive = false;
}
</script>
你可以找到一些伟大的鼠标事件的信息,包括浏览器的兼容性指出here。
很好的解决方法。将它与.addEventListener(“mouseenter”,函数)混合似乎是一个很好的解决方案。 – Paul 2017-11-29 20:54:43