Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 当元素阻塞光标消失时,对鼠标输入不在Chrome中触发作出反应_Javascript_Reactjs_Google Chrome - Fatal编程技术网

Javascript 当元素阻塞光标消失时,对鼠标输入不在Chrome中触发作出反应

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

注意:这似乎是Chrome独有的问题

当阻止事件元素的元素消失时,React当前不会触发
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添加条件检查。