2013-03-14 85 views
20

當前在我的應用程序中,我捕捉鼠標滾輪事件並在Canvas元素上執行放大或縮小操作。如果用戶使用Mac並嘗試使用觸控板執行縮放,則不存在事件,實際發生的事情是放大/縮小瀏覽器。捕捉Mac觸控板zoom

有沒有辦法捕捉使用觸控板執行的縮放事件?

+0

這有幫助嗎? http://stackoverflow.com/questions/2916081/zoom-in-on-a-point-using-scale-and-translate – 2013-03-14 18:13:13

+1

不,如我所說,我沒有問題onmousewheel – 2013-03-14 18:15:43

+0

沒錯。這篇IBM文章http://www.ibm.com/developerworks/library/wa-games/index.html?cmp=dw&cpb=dwwdv&ct=dwnew&cr=dwnen&ccy=zz&csr=080312將我指向Modernizr http://modernizr.com/ IBM似乎用來檢測'觸摸'事件的文檔。可能有幫助。 – 2013-03-14 18:28:20

回答

-5

沒有辦法趕上捏放大/縮小觸控板與只有JavaScript

+0

以上 – 2016-08-29 23:37:55

0

環顧四周後,這是否幫助任何?它涵蓋了Web應用程序和JavaScript在其討論中,並作爲檢測夾點事件的可能解決方案來探討... Simplest way to detect a pinch

+0

gesturestart等不支持桌面Safari。 – 2015-03-17 09:44:25

1

據我所知,觸控板捏不會觸發觸摸或手勢事件,所以Hammer.js不會檢測到它。

我能夠通過使用Hamster.js在Chrome中模擬夾點檢測。它將觸發鼠標滾輪事件,您可以使用增量來確定用戶是否放大或縮小。

儘管此解決方案在Safari中不起作用。

20

至少在Chrome中,觸控板「捏到縮放」會觸發輪子/鼠標滾輪事件,就像按下Ctrl鍵一樣。您可以捕獲此事件,就像任何其他輪/鼠標輪事件一樣,並防止發生其默認設置。下面是使用jQuery的例子:

$("canvas").on("mousewheel", function(e) { 
    if (e.ctrlKey) { 
     e.preventDefault(); 
     e.stopImmediatePropagation(); 

     // perform desired zoom action here 
    } 
}); 
+2

從Chrome 45.0.2421.0起,不再是這種情況。 – 2015-06-08 04:09:27

+0

@PhpMyCoder你有一個參考,或爲此提交? – sgrove 2015-06-09 04:39:16

+0

@sgrove不幸的是,我沒有提交。但我確實有Chrome 45.0.2421.0,並且可以確認它不再。 – 2015-06-09 12:54:21

3

Starting from Safari 9.1你可以捕捉從OSX設備縮放和旋轉活動。欲瞭解更多信息,請閱讀GestureEvent Class Reference。請注意,這隻適用於Safari,但因爲你的問題是關於「Mac trackpad zoom」我想這就是你要找的。


注意:iOS上的Safari也支持這些事件。