【问题标题】:How to detect when chromium/ electron is done zooming?如何检测铬/电子何时完成缩放?
【发布时间】:2019-03-14 14:18:27
【问题描述】:

我正在使用 Electron 并尝试检测 Electron 何时完成执行 Control + 0 功能,该功能使窗口的缩放回到 100%。我有一个类似于 chrome 右上角的 3 点菜单的菜单,并且希望在我使用 control + 0 时更新缩放数字。

但是根据我的尝试,我收集到,如果我只是添加一个键盘事件侦听器,就像我在运行更新菜单的函数下方所做的那样,我将在电子/铬完成之前完成缩放。

那么我将如何检测何时完成,以便我可以相应地执行我的功能?

public onKeydown(event: KeyboardEvent) {
    const key = event.key
    const control = event.ctrlKey

    if (control === true && key === '0') {
      this.updateCurrentZoom()
    }
  }

【问题讨论】:

  • 您是否尝试过其他键盘事件,通常是 keypress 和 keyup?
  • 如果这足以让您在打开菜单时获取当前缩放,您可以使用contents.getZoomFactor或其亲属
  • @ghybs - 问题不是让 Ctrl+0 工作得很好,问题是我的事件将在 Chromium/Electron 执行其内部 Ctrl+0 事件之前独立触发
  • @pergy - 问题不在于获取值,而是在 Chromium/Electron 执行其内部 Ctrl+0 函数以将缩放重置为 100% 后,我无法拦截并执行函数。跨度>
  • @DanielTurcich 我明白你在说什么,但你可能还没有意识到这些事件之间的时间差异。

标签: electron chromium


【解决方案1】:

我最近在我的 Electron 应用程序的窗口标题中添加了一个显示当前缩放系数的后缀字符串。

为了检测缩放变化(包括缩放重置),我不得不使用窗口 'resize' 事件,令人惊讶的是,它不仅在窗口大小被修改时触发,而且在缩放级别改变时触发!

// Renderer process
const { webFrame } = require ('electron');
window.addEventListener
(
    'resize',
    (event) =>
    {
        // Returns 1.0 for 100%
        let zoomFactor = webFrame.getZoomFactor ();
        updateCurrentZoom (zoomFactor);
    }
);

【讨论】:

  • 这似乎不会触发,除非在调整大小时。也许您正在使用更高版本的 Electron 并且添加了一些内容?我在 1.8.7
  • 确实,我使用的是最新的 Electron 版本 3.0.4。我猜这取决于新的底层 Chromium 版本 66。
  • 实际上,我对 Electron Quick Start 应用程序的克隆做了一些测试,它在 2.0.4 和 1.8.7 中也可以工作,但我忘了提到我在 macOS 上...
  • 可能与macOS有关?因为在 Windows 10 上,它肯定只会在窗口调整大小时触发......而且我仍然找不到关于它的任何其他内容:/你会认为其他人之前会遇到过这个问题。或者我只是不擅长寻找任何一种方式。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-02
  • 1970-01-01
相关资源
最近更新 更多