scratch – Blame information for rev 117
?pathlinks?
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 | }; |