NodeJS 是否可以在电子快速启动JS应用程序中禁用放大/缩小功能?

amrnrhlw  于 2023-02-21  发布在  Node.js
关注(0)|答案(5)|浏览(139)

这个问题是专门针对电子快速启动的,所以它不是重复的。
我是在JS桌面应用程序与https://github.com/electron/electron-quick-start的第一步,我有代码,我可以运行我的mac(hine)的应用程序。
我注意到可以放大/缩小应用程序上的文本,这是网络上常见的功能,但在桌面应用程序中并不常见。
如何禁用该行为?

sirbozc5

sirbozc51#

不建议使用setVisualZoomLevelLimits命令。

var app = require('electron')
app.commandLine.appendSwitch('disable-pinch');

通过混合这两个链接找到的解决方案:
1 -https://github.com/electron/electron/issues/8793#issuecomment-289791853
2 - https://github.com/electron/electron/blob/master/docs/api/chrome-command-line-switches.md

q0qdq0h2

q0qdq0h22#

看起来将以下代码添加到renderer.js中就可以完成这项工作:

var webFrame = require('electron').webFrame;
    webFrame.setVisualZoomLevelLimits(1,1);
require('electron').webFrame.setLayoutZoomLevelLimits(0, 0);

通过鼠标缩放和通过Ctrl++/Ctrl+-缩放均被禁用。
如果有人有意见或更好的答案,我将不胜感激。

67up9zun

67up9zun3#

Chrome删除了setLayoutZoomLevelLimits(0,0),因为它现在超出了电子限制,

  • https://www.electronjs.org/docs/latest/breaking-changes#removed-webframesetlayoutzoomlevellimits
  • https://chromium.googlesource.com/chromium/src/+/938b37a6d2886bf8335fc7db792f1eb46c65b2ae/third_party/blink/common/page/page_zoom.cc#11

因此,Ctrl/Cmd +Ctrl/Cmd -将触发缩放操作,有一个很酷的变通方案,我建议注册快捷方式,并通过使用以下代码片段停止操作:

  • onFocus不返回任何内容
window.on('focus', () => {
  globalShortcut.register("CommandOrControl", () => { return })
})
  • onBlur取消注册快捷方式
window.on('blur', () => {
  globalShortcut.unregister("CommandOrControl+=")
  globalShortcut.unregister("CommandOrControl+-")
})
sh7euo9m

sh7euo9m4#

如果您想在主进程中执行相同的操作(在main.js中的情况下),可以执行以下操作:

let webContents = mainWindow.webContents
webContents.on('did-finish-load', () => {
  webContents.setZoomFactor(1)
  webContents.setVisualZoomLevelLimits(1, 1)
  webContents.setLayoutZoomLevelLimits(0, 0)
})
yrefmtwq

yrefmtwq5#

将以下内容添加到JavaScript文件中,您的渲染html文件将从该文件中获取(请参见主进程与渲染器进程)。

var webFrame = require('electron').webFrame;
webFrame.setVisualZoomLevelLimits(1, 1);
webFrame.setLayoutZoomLevelLimits(0, 0);

在您的例子中,它是renderer.js的电子快速启动应用程序。
文件:https://github.com/electron/electron/blob/master/docs/api/web-frame.md#webframesetzoomlevellimitsminimumlevel-maximumlevel

相关问题