javascript - 如何知道从 mouseclick 或按下 enter 键调用了 onclick 事件
问题描述
在我的反应应用程序中,我有一个带有onclick
事件的锚标记。
如果我按下选项卡并且当焦点出现在这个锚点上时,那么通过按下回车键clickMe
也可以调用。
如何检查 clickMe
通过鼠标单击或按回车键调用的函数内部。
我的代码如下。我已经尝试过event.type
,event.keyCode
但它对我不起作用。沙盒链接是https://codesandbox.io/s/react-basic-example-fpmvy
从“反应”导入反应,{组件};
class App extends Component {
state = {}
clickMe = (e) => {
console.log("I am called")
}
render() {
return (
<div className="app">
<a href="#" onClick={(e)=>this.clickMe(e)}>Country</a>
</div>
);
}
}
export default App;
解决方案
我发现区分单击是来自鼠标还是键盘的唯一 hacky 方法是使用event.screenX
andevent.screenY
属性。如果事件不是从屏幕触发的,则两个值都将为零。
clickMe = e => {
console.log(e.screenX, e.screenY);
if (e.screenX === 0 && e.screenY === 0) {
// event not triggered from the screen.
console.log("not from screen");
} else {
// clicked by the mouse.
}
};
这是一个代码框示例
推荐阅读
- c# - 实体框架应用格式获取价值
- python - 使用分类特征的协同过滤
- c# - ScrollViewer 拇指没有移动
- visual-studio-code - VS Code -- 注释 .jsx 语法
- arrays - 在 C# 中初始化一个结构数组
- java - java生成并行IntStream(和其他流)问题
- highcharts - HighCarts 饼图未在饼图标签中显示值
- c# - 在表单之间传递数据以绘制表面,不起作用
- xpath - 在 current-group() 上使用 XPath
- jquery - 大尺寸的 svg 无法正常工作 如何在 react-pan-zoon-svg 中设置大 svg?