scratch – Blame information for rev 117

Subversion Repositories:
Rev:
Rev Author Line No. Line
117 office 1 /*=========================
2 Keyboard Control
3 ===========================*/
4 function handleKeyboard(e) {
5 if (e.originalEvent) e = e.originalEvent; //jquery fix
6 var kc = e.keyCode || e.charCode;
7 // Directions locks
8 if (!s.params.allowSwipeToNext && (s.isHorizontal() && kc === 39 || !s.isHorizontal() && kc === 40)) {
9 return false;
10 }
11 if (!s.params.allowSwipeToPrev && (s.isHorizontal() && kc === 37 || !s.isHorizontal() && kc === 38)) {
12 return false;
13 }
14 if (e.shiftKey || e.altKey || e.ctrlKey || e.metaKey) {
15 return;
16 }
17 if (document.activeElement && document.activeElement.nodeName && (document.activeElement.nodeName.toLowerCase() === 'input' || document.activeElement.nodeName.toLowerCase() === 'textarea')) {
18 return;
19 }
20 if (kc === 37 || kc === 39 || kc === 38 || kc === 40) {
21 var inView = false;
22 //Check that swiper should be inside of visible area of window
23 if (s.container.parents('.' + s.params.slideClass).length > 0 && s.container.parents('.' + s.params.slideActiveClass).length === 0) {
24 return;
25 }
26 var windowScroll = {
27 left: window.pageXOffset,
28 top: window.pageYOffset
29 };
30 var windowWidth = window.innerWidth;
31 var windowHeight = window.innerHeight;
32 var swiperOffset = s.container.offset();
33 if (s.rtl) swiperOffset.left = swiperOffset.left - s.container[0].scrollLeft;
34 var swiperCoord = [
35 [swiperOffset.left, swiperOffset.top],
36 [swiperOffset.left + s.width, swiperOffset.top],
37 [swiperOffset.left, swiperOffset.top + s.height],
38 [swiperOffset.left + s.width, swiperOffset.top + s.height]
39 ];
40 for (var i = 0; i < swiperCoord.length; i++) {
41 var point = swiperCoord[i];
42 if (
43 point[0] >= windowScroll.left && point[0] <= windowScroll.left + windowWidth &&
44 point[1] >= windowScroll.top && point[1] <= windowScroll.top + windowHeight
45 ) {
46 inView = true;
47 }
48  
49 }
50 if (!inView) return;
51 }
52 if (s.isHorizontal()) {
53 if (kc === 37 || kc === 39) {
54 if (e.preventDefault) e.preventDefault();
55 else e.returnValue = false;
56 }
57 if ((kc === 39 && !s.rtl) || (kc === 37 && s.rtl)) s.slideNext();
58 if ((kc === 37 && !s.rtl) || (kc === 39 && s.rtl)) s.slidePrev();
59 }
60 else {
61 if (kc === 38 || kc === 40) {
62 if (e.preventDefault) e.preventDefault();
63 else e.returnValue = false;
64 }
65 if (kc === 40) s.slideNext();
66 if (kc === 38) s.slidePrev();
67 }
68 s.emit('onKeyPress', s, kc);
69 }
70 s.disableKeyboardControl = function () {
71 s.params.keyboardControl = false;
72 $(document).off('keydown', handleKeyboard);
73 };
74 s.enableKeyboardControl = function () {
75 s.params.keyboardControl = true;
76 $(document).on('keydown', handleKeyboard);
77 };