2013-03-14 31 views
20

Hiện tại trong ứng dụng của tôi, tôi đang nắm bắt các sự kiện bánh xe chuột và thực hiện phóng to hoặc thu nhỏ trên phần tử Canvas. Nếu người dùng sử dụng Mac và cố gắng thực hiện thu phóng bằng bàn di chuột, không có sự kiện nào và điều thực sự xảy ra là phóng to/thu nhỏ trình duyệt.Bắt bàn di chuột Mac zoom

Có cách nào để nắm bắt sự kiện thu phóng được thực hiện bằng bảng cảm ứng không?

+0

Điều này có hữu ích không? http://stackoverflow.com/questions/2916081/zoom-in-on-a-point-using-scale-and-translate –

+1

Không, như tôi đã nói, tôi không gặp vấn đề gì với onmousewheel –

+0

Phải. Bài viết này của IBM http://www.ibm.com/developerworks/library/wa-games/index.html?cmp=dw&cpb=dwwdv&ct=dwnew&cr=dwnen&ccy=zz&csr=080312 đã chỉ tôi tới Modernizr http://modernizr.com/ tài liệu/mà IBM dường như sử dụng để phát hiện các sự kiện 'chạm'. Có thể giúp. –

Trả lời

-5

Không có cách nào để bắt nhúm zoom-in/zoom-out của trackpad chỉ với Javascript

+0

đơn giản là sai như đã được chứng minh trên –

0

Sau khi nhìn xung quanh, điều này giúp bất kỳ? nó bao gồm cả ứng dụng web và javascript trong cuộc thảo luận của nó và đến với hammer.js như một giải pháp có thể để phát hiện các sự kiện ... Simplest way to detect a pinch

+0

gesturestart, v.v. không được Safari Safari hỗ trợ. –

1

Theo như tôi biết, pinpad trackpad không kích hoạt sự kiện chạm hoặc cử chỉ , vì vậy Hammer.js sẽ không phát hiện ra nó.

Tôi đã có thể mô phỏng phát hiện pinch trong Chrome bằng cách sử dụng Hamster.js. Nó sẽ kích hoạt sự kiện bánh xe chuột và bạn có thể sử dụng đồng bằng để xác định xem người dùng có phóng to hoặc thu nhỏ không.

Giải pháp này không hoạt động trong Safari.

20

Ít nhất trong Chrome, bàn di chuột "pinch-to-zoom" kích hoạt sự kiện bánh xe/con lăn xuất hiện như thể nhấn phím ctrl. Bạn có thể nắm bắt sự kiện này giống như bất kỳ sự kiện bánh xe/bánh xe nào khác và ngăn sự kiện mặc định của nó xuất hiện. Dưới đây là một ví dụ sử dụng jQuery:

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

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

Kể từ Chrome 45.0.2421.0, điều này không còn là trường hợp. –

+0

@PhpMyCoder Bạn có tham chiếu hay cam kết cho điều đó không? – sgrove

+0

@sgrove Thật không may, tôi không có cam kết. Nhưng tôi có Chrome 45.0.2421.0 và có thể xác nhận nó không còn nữa. –

3

Starting from Safari 9.1 bạn có thể bắt zoom và xoay các sự kiện từ thiết bị OSX. Để biết thêm thông tin, hãy đọc GestureEvent Class Reference. Lưu ý rằng tính năng này chỉ hoạt động trong Safari nhưng vì câu hỏi của bạn là về "Mac zoompad" Tôi nghĩ đây là những gì bạn đang tìm kiếm.


Lưu ý phụ: những sự kiện này cũng được hỗ trợ trong Safari trên iOS.

Các vấn đề liên quan