2013-03-14 15 views
20

Obecnie w mojej aplikacji łapię zdarzenia kółka myszy i wykonuję powiększanie lub pomniejszanie elementu Canvas. Jeśli użytkownik użyje Maca i spróbuje wykonać powiększenie za pomocą gładzika, nie ma żadnego zdarzenia, a co się dzieje, to powiększanie/zmniejszanie przeglądarki.Catching Mac gładzik zoom

Czy istnieje sposób na wychwycenie zdarzenia powiększenia wykonanego za pomocą gładzika?

+0

Czy to pomaga? http://stackoverflow.com/questions/2916081/zoom-in-on-a-point-using-scale-and-translate –

+1

Nie, jak powiedziałem, nie mam problemu z onmousewheel –

+0

Dobrze. Ten artykuł IBM http://www.ibm.com/developerworks/library/wa-games/index.html?cmp=dw&cpb=dwwdv&ct=dwnew&cr=dwnen&ccy=zz&csr=080312 zwrócił mi uwagę na Modernizr http://modernizr.com/ dokumenty/które wydaje się być używane przez firmę IBM do wykrywania zdarzeń "dotknięcia". Może pomóc. –

Odpowiedz

-5

Nie ma sposobu, aby złapać powiększania pinch/zoom-out trackpad z tylko Javascript

+0

po prostu źle, jako sprawdzone powyżej –

0

po patrząc dookoła, ma to pomóc w jakikolwiek? obejmuje on zarówno aplikację i JavaScript w swojej dyskusji i dochodzi do hammer.js jako możliwe rozwiązanie do wykrywania zdarzeń dociskowych ... Simplest way to detect a pinch

+0

geststart itp. nie są obsługiwane przez Safari na pulpicie. –

1

O ile mi wiadomo, szczypta gładzik nie wyzwala dotykowych gestów lub zdarzeń , więc Hammer.js go nie wykryje.

Udało mi się symulować wykrywanie szczyp w Chrome przy użyciu pliku Hamster.js. Spowoduje to wywołanie zdarzenia kółka myszy i możesz użyć delty do określenia, czy użytkownik przybliża lub pomniejszy.

To rozwiązanie nie działało jednak w Safari.

20

Przynajmniej w przeglądarce Chrome touchpad "pinch-to-zoom" uruchamia zdarzenie wheel/mousewheel, które pojawia się tak, jakby naciśnięty został klawisz Ctrl. Możesz uchwycić to zdarzenie, tak jak każde inne zdarzenie koło/kółko myszy, i zapobiec jego domyślnemu wystąpieniu. Oto przykład przy użyciu jQuery:

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

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

Od wersji Chrome 45.0.2421.0 nie jest już tak. –

+0

@PhpMyCoder Czy masz referencję lub zatwierdzenie? – sgrove

+0

@sgrove Niestety, nie mam zatwierdzenia. Ale mam Chrome 45.0.2421.0 i mogę potwierdzić, że już go nie ma. –

3

Starting from Safari 9.1 można złapać powiększania i obracania wydarzenia z urządzeń OSX. Aby uzyskać więcej informacji przeczytaj artykuł GestureEvent Class Reference. Zauważ, że działa to tylko w Safari, ale ponieważ twoje pytanie dotyczyło "Mac zoomu trackpada" Myślę, że właśnie tego szukasz.


Uwaga boczna: te zdarzenia są również obsługiwane w Safari na iOS.