37

電子アプリでピンチズームを無効にする方法はありますか?

ここで説明されているように、通常の JavaScript メソッドを使用して Web ビュー内から動作させることはできません: https://stackoverflow.com/a/23510108/665261

--disable-pinchフラグはelectron でサポートされていないようです。

以下を使用してさまざまな方法を試しました。

  1. event.preventDefault()JavaScripttouchmove/mousemoveイベントについて
  2. meta viewportHTML のタグ
  3. -webkit-text-size-adjustCSSで
  4. electron の flags/config

Webkit全般、または特に電子のいずれかの方法はありますか?

4

9 に答える 9

29

更新 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();
  }
});

ChromiummonitorEvents(document)を使用すると、このイベントの原因であることがわかりましたmousewheelmousewheelピンチズームでトリガーされた理由はわかりません。次のステップでは、通常のスクロールとピンチ ズームの違いを見つけます。

ピンチズームには属性e.ctrlKey = trueがあり、通常のスクロールイベントには属性がありますe.ctrlKey = false。しかし、ctrlキーを押しながらページをスクロールするとe.ctrlKeytrue.

より良い解決策が見つかりませんでした。:(

デモ

document.addEventListener('mousewheel', function(e) {
  if(e.ctrlKey) {
    e.preventDefault();
  }
});
于 2015-05-01T20:25:51.163 に答える
1

使用できない理由は次のとおりです。

<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=0"/>

それをヘッダーに入れると、デバイスがズームするのを防ぎます。

于 2015-05-04T13:50:28.360 に答える
0

メタタグが機能するはずです。minimum-scale=1.0 を使用してみてください

<meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, user-scalable=no">

それも機能しない場合は、最小スケールと最大スケールの両方を追加します

<meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no">

PS : 携帯電話でのみズームを無効にします。

于 2015-05-06T11:05:47.690 に答える