Google analytics 对于Electron,有没有办法区分用户单击菜单项和使用键盘快捷键?
对于Electron,有没有办法区分用户单击菜单项和使用键盘快捷键Google analytics 对于Electron,有没有办法区分用户单击菜单项和使用键盘快捷键?,google-analytics,electron,Google Analytics,Electron,对于Electron,有没有办法区分用户单击菜单项和使用键盘快捷键 我知道两者的预期行为大体相同,但我想分别跟踪快捷方式和菜单单击的使用情况。不幸的是,您不能直接这样做。MenuItem处理程序的事件参数没有一个属性,该属性指示是通过鼠标还是键盘调用该操作 变通办法 但是,您当然可以使用一种变通方法,即如果使用键盘快捷键触发菜单功能,则可以使用事件从渲染器进程中同时捕获按键 在最简单的形式中,您可以跟踪对菜单函数的所有调用,即不管它们是通过鼠标还是键盘调用的。同时,在渲染器中侦听相同的快捷方式。
我知道两者的预期行为大体相同,但我想分别跟踪快捷方式和菜单单击的使用情况。不幸的是,您不能直接这样做。MenuItem处理程序的
事件
参数没有一个属性,该属性指示是通过鼠标还是键盘调用该操作
变通办法
但是,您当然可以使用一种变通方法,即如果使用键盘快捷键触发菜单功能,则可以使用事件从渲染器进程中同时捕获按键
在最简单的形式中,您可以跟踪对菜单函数的所有调用,即不管它们是通过鼠标还是键盘调用的。同时,在渲染器中侦听相同的快捷方式。每当检测到快捷方式也是菜单中的加速器时,请记下该快捷方式
例子
假设使用鼠标单击操作,然后使用快捷方式,然后再次使用鼠标,则跟踪的事件将是:
# time event
1 t0 Menu item action (Using mouse)
2 t1 Menu item action (Using keyboard shortcut)
3 ~t1 Keyboard shortcut detected
4 t2 Menu item action (Using mouse)
如果您有这样的数据,您可以计算“菜单项操作”(此处为3)和“检测到的键盘快捷键”(此处为1)的出现次数。然后您就知道三次菜单操作中有一次是使用键盘快捷键调用的
缺点
这种解决方法的缺点是:
- 菜单加速器和键侦听器的重复代码
- 使用键盘时生成两个事件
根据您的特定用例,您可以想出补救这些缺点的可能方法。不幸的是,您不能直接这样做。MenuItem处理程序的
事件
参数没有一个属性,该属性指示是通过鼠标还是键盘调用该操作
变通办法
但是,您当然可以使用一种变通方法,即如果使用键盘快捷键触发菜单功能,则可以使用事件从渲染器进程中同时捕获按键
在最简单的形式中,您可以跟踪对菜单函数的所有调用,即不管它们是通过鼠标还是键盘调用的。同时,在渲染器中侦听相同的快捷方式。每当检测到快捷方式也是菜单中的加速器时,请记下该快捷方式
例子
假设使用鼠标单击操作,然后使用快捷方式,然后再次使用鼠标,则跟踪的事件将是:
# time event
1 t0 Menu item action (Using mouse)
2 t1 Menu item action (Using keyboard shortcut)
3 ~t1 Keyboard shortcut detected
4 t2 Menu item action (Using mouse)
如果您有这样的数据,您可以计算“菜单项操作”(此处为3)和“检测到的键盘快捷键”(此处为1)的出现次数。然后您就知道三次菜单操作中有一次是使用键盘快捷键调用的
缺点
这种解决方法的缺点是:
- 菜单加速器和键侦听器的重复代码
- 使用键盘时生成两个事件
根据您的特定用例,您可以想出可能的方法来弥补这些缺点。实际上,尽管我有类似的想法,但我们确实找到了一个更好的变体:)在
菜单项构造函数选项上有一个名为registerAccelerator
的选项。将其设置为false时,它仍会渲染快捷方式,但不会对其作出反应。通过这种方式,您可以对渲染器中的快捷方式做出反应,并单独跟踪所有快捷方式。如果您认为答案有帮助,可以使用复选标记:)实际上,尽管我有类似的想法,但我们确实找到了一个更好的变体:)在菜单项构造函数选项上有一个名为registerAccelerator
的选项。将其设置为false时,它仍会渲染快捷方式,但不会对其作出反应。这样,您可以对渲染器中的快捷方式做出反应,并单独跟踪所有快捷方式。如果您认为答案有帮助,可以使用复选标记:)