2015-04-28 83 views
34

有沒有什麼辦法可以在electron應用中禁用縮放?禁用webkit(或電子)捏縮放

我不能讓它從網絡視圖中的工作與正常的JavaScript方法如下所述:https://stackoverflow.com/a/23510108/665261

看來--disable-pinch標誌not supported by electron

我一直在使用各種方法嘗試:

  1. event.preventDefault()在HTML的JavaScript touchmove/mousemove事件
  2. meta viewport標籤
  3. -webkit-text-size-adjust在CSS
  4. 標誌/配置的電子

Webkit中是否有任何方法?一般,還是electron特別是?

回答

22

更新2:

使用webFrame.setZoomLevelLimits(v0.31.1 +)在呈現進程Differences Between Main Process and Renderer Process)。由於mac上的智能縮放仍然適用於document.addEventListener。

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


UPDATE:

deltaY屬性指縮放有float值,但正常的滾動事件返回int值。現在解決方案與Ctrl鍵沒有問題。

Demo 2

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

使用鉻monitorEvents(document)我發現,負責這個事件mousewheel。我不知道,爲什麼mousewheel觸發與捏縮放。 下一步,找到正常滾動和縮放之間的區別。

捏縮放有一個屬性e.ctrlKey = true,正常的滾動事件有e.ctrlKey = false。但如果按住ctrl鍵並滾動一頁,e.ctrlKey等於true

我找不到更好的解決方案。:(

Demo

document.addEventListener('mousewheel', function(e) { 
    if(e.ctrlKey) { 
    e.preventDefault(); 
    } 
}); 
+3

將它與keydown/keyup事件結合起來,檢查ctrlKey是否由使用全局標誌的實際鍵設置,可能可以解決區分問題。 – K3N

0

是否有一個理由,爲什麼你不能使用:

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

放進了頭,是它讓設備從縮放

+2

似乎無法在我的mac上使用chrome –

+0

哦。當我想禁用移動設備上的縮放時,這是我的竅門。當我在桌面上時,從不必擔心禁用縮放功能。 –

3

桌面瀏覽器似乎很難防止縮放。

雖然這裏有一些想法!

1)利用一些手勢的JavaScript像hammer.js,檢測捏事件,並試圖阻止它使用e.preventDefault

OR

2)設計一切都在CSS使用 「%」,或使用新的單位像「vm」等等(如果可能的話)。這樣,即使頁面將被縮放,但內容對於任何縮放級別都將保持不變。

一切順利!

+0

感謝您的建議。我試過兩種解決方案。錘子,真棒,因爲它似乎沒有幫助。它似乎將識別者添加爲事件的頂層,我認爲我需要一些有助於訪問更低級功能的內容。第二個似乎沒有影響,當我把字體大小作爲正文,HTML,段落等百分比規則... –

0

元標記應該工作。嘗試使用最小規模= 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"> 

附: :它只會禁用手機上的縮放。

+2

它可能適用於手機,我想要一個也適用於桌面的解決方案。 –

0

我搜索了這麼久,很難爲這個問題的簡單解決方案無濟於事......但後來我發現了一個名爲fullpage.js的插件,可以防止捏縮放,同時仍然允許觸摸手勢。通過JS/CSS淘汰的過程中,我發現了一個很簡單的解決辦法:

touch-action: none; 

添加此成功地防止擠捏縮放我的全頁面元素,但讓我擴大fabricjs對象與捏。萬歲!