問題描述
有沒有辦法停用 electron 應用程式中的縮小縮放?
我不能讓它從 web-view 裡面正常工作的 JavaScript 方法,如下所述:https://stackoverflow.com/a/23510108/665261
看來--disable-pinch 標誌是 not supported by electron 。
我已經嘗試過各種方法:
-
event.preventDefault()在 javascripttouchmove/mousemove事件 -
HTML 中的
meta viewport標籤 -
-webkit-text-size-adjust在 CSS 中 -
電子標誌/配置
一般來說,是否有任何方法用於 webkit,特別是 electron?
最佳解決思路
更新 2:
在渲染過程中使用 webFrame.setZoomLevelLimits(v0.31.1 +)(Differences Between Main Process and Renderer Process) 。因為 mac 上的智慧縮放仍然可以使用 document.addEventListener 。
實施例 require('electron').webFrame.setZoomLevelLimits(1, 1)
更新:
deltaY 屬性用於縮小縮放有 float 的值,但正常滾動事件返回 int 的值。現在解決方案沒有 ctrl 鍵的問題。
Demo 2 。
document.addEventListener('mousewheel', function(e) {
if(e.deltaY % 1 !== 0) {
e.preventDefault();
}
});
使用 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();
}
});
次佳解決思路
桌面瀏覽器似乎很難防止捏縮。
這裡有一些想法!
1) 透過使用一些手勢 javascript 像 hammer.js,檢測 Pinch 事件並嘗試使用 e.preventDefault 來防止它
要麼
2) 使用 css 中的”%” 設計所有內容,或者使用像”vm” 等更新的單元 (如果可能的話) 。這樣,即使是頁面也會被放大,但是對於任何縮放級別,內容將保持不變。
祝一切順利!
參考文獻
注:本文內容整合自 Google/Baidu/Bing 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇。