禁用webkit(或电子)中的缩放缩放

Bil*_*oon 37 html javascript css webkit electron

有没有办法在电子应用程序中禁用缩放缩放?

我无法使用正常的javascript方法在Web视图中工作,如下所述:https://stackoverflow.com/a/23510108/665261

电子似乎不支持这面--disable-pinch旗帜.

我使用以下各种方法进行了实验:

  1. event.preventDefault()关于javascript touchmove/mousemove事件
  2. meta viewport HTML中的标签
  3. -webkit-text-size-adjust 在CSS中
  4. 标志/配置电子

对于webkit,或者特别是电子,有什么方法吗?

art*_*nik 24

更新2:

渲染过程中使用webFrame.setZoomLevelLimits(v0.31.1 +)(主进程和渲染器进程之间的差异).因为mac上的智能缩放仍然可以使用document.addEventListener.

require('electron').webFrame.setZoomLevelLimits(1, 1)


更新:

deltaY用于缩放缩放的属性具有float值,但是正常的滚动事件返回int值.现在解决方案与ctrl键没有问题.

演示2.

document.addEventListener('mousewheel', function(e) {
  if(e.deltaY % 1 !== 0) {
    e.preventDefault();
  }
});
Run Code Online (Sandbox Code Playgroud)

使用Chromium monitorEvents(document)我发现它负责此事件mousewheel.我不知道,为什么mousewheel用捏缩放触发.下一步,找出正常滚动和缩放缩放之间的差异.

捏缩放具有属性e.ctrlKey = true,而普通滚动事件具有e.ctrlKey = false.但是如果按住ctrl键并滚动页面,则e.ctrlKey相同true.

我找不到更好的解决方案.:(

演示

document.addEventListener('mousewheel', function(e) {
  if(e.ctrlKey) {
    e.preventDefault();
  }
});
Run Code Online (Sandbox Code Playgroud)

  • 将此与keydown/keyup事件相结合以检查ctrlKey是否由实际键使用全局标志设置可能会解决区分问题. (3认同)