Javascript 当元素阻塞光标消失时,对鼠标输入不在Chrome中触发作出反应
注意:这似乎是Chrome独有的问题 当阻止事件元素的元素消失时,React当前不会触发Javascript 当元素阻塞光标消失时,对鼠标输入不在Chrome中触发作出反应,javascript,reactjs,google-chrome,Javascript,Reactjs,Google Chrome,注意:这似乎是Chrome独有的问题 当阻止事件元素的元素消失时,React当前不会触发onMouseEnter事件。标准JS事件甚至委托事件都不是这样 这里是一个简化的描述和代码样本的问题,我有;当下部元素的工具提示消失(光标位于上部元素上方)时,onMouseEvent不会触发: 函数reactMouseEnter({currentTarget}){ log('React Mouse Enter Event'); const rect=currentTarget.getBoundingC
onMouseEnter
事件。标准JS事件甚至委托事件都不是这样
这里是一个简化的描述和代码样本的问题,我有;当下部元素的工具提示消失(光标位于上部元素上方)时,onMouseEvent
不会触发:
函数reactMouseEnter({currentTarget}){
log('React Mouse Enter Event');
const rect=currentTarget.getBoundingClientRect();
常量工具提示=document.createElement('div');
tooltip.classList.add('tooltip');
tooltip.style.top=rect.y-30+'px';
document.body.appendChild(工具提示);
常量mouseLeaveHandler=()=>{
currentTarget.removeEventListener('mouseleave',mouseLeaveHandler);
设置超时(()=>{
tooltip.parentNode.removeChild(工具提示);
}, 300);
};
currentTarget.addEventListener('mouseleave',mouseLeaveHandler);
}
类示例扩展了React.Component{
ref=React.createRef()
componentDidMount(){
this.ref.current.addEventListener('mouseenter',()=>{
log(“常规鼠标进入事件”);
})
}
render(){
返回(
);
}
}
ReactDOM.render(,document.getElementById('example'))代码>
.box{
边框:1px纯黑;
高度:28px;
边缘底部:10px;
位置:相对位置;
宽度:28px;
}
.工具提示{
宽度:30px;
高度:30px;
背景颜色:浅珊瑚;
位置:绝对位置;
}
这在技术上是有意的,因为onMouseCenter只在元素的边界上激发。您想使用onMouseOver
您可以看到,带计数器的中间框不是元素的一部分,因此请使用它进行测试。我更新了我的问题,以更好地反映标准JavaScript事件仍然被触发,即使当前存在问题。如果重新运行上面的示例,您将看到常规事件被触发,而react事件则没有。@KevBot只需将您的onMouseEnter
s更改为onMouseOver
。为我工作。@KevBot您无法使用OnMouseCenter使其工作,但如果您让我们知道您所面临的意外影响,我可以尝试提供帮助。您始终可以向onMouseOver添加条件检查。