Google analytics 对于Electron,有没有办法区分用户单击菜单项和使用键盘快捷键?

Google analytics 对于Electron,有没有办法区分用户单击菜单项和使用键盘快捷键?,google-analytics,electron,Google Analytics,Electron,对于Electron,有没有办法区分用户单击菜单项和使用键盘快捷键 我知道两者的预期行为大体相同,但我想分别跟踪快捷方式和菜单单击的使用情况。不幸的是,您不能直接这样做。MenuItem处理程序的事件参数没有一个属性,该属性指示是通过鼠标还是键盘调用该操作 变通办法 但是,您当然可以使用一种变通方法,即如果使用键盘快捷键触发菜单功能,则可以使用事件从渲染器进程中同时捕获按键 在最简单的形式中,您可以跟踪对菜单函数的所有调用,即不管它们是通过鼠标还是键盘调用的。同时,在渲染器中侦听相同的快捷方式。

对于Electron,有没有办法区分用户单击菜单项和使用键盘快捷键


我知道两者的预期行为大体相同,但我想分别跟踪快捷方式和菜单单击的使用情况。

不幸的是,您不能直接这样做。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时,它仍会渲染快捷方式,但不会对其作出反应。这样,您可以对渲染器中的快捷方式做出反应,并单独跟踪所有快捷方式。如果您认为答案有帮助,可以使用复选标记:)