2013-03-14 102 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也支持这些事件。