1 2var stickyItem = 'sticky-header'; // the ID of the fixed-position element 3var readAssistOffset = 50; // screen height - this offset value = scroll distance 4var duration = 250; // scroll speed in ms 5var doc = document.documentElement; 6 7keydown = function (e) { 8 9 var curElement = document.activeElement.nodeName; 10 11 if ((e.keyCode === 32 && curElement === "BODY") || (e.keyCode === 33 || e.keyCode === 34)) { 12 13 var viewportHeight = window.innerHeight; 14 var stickyHeaderHeight = document.getElementById(stickyItem).offsetHeight; 15 var newViewportHeight = viewportHeight - stickyHeaderHeight - readAssistOffset; 16 17 e.preventDefault(); 18 19 if(e) { 20 21 isShift = e.shiftKey || e.keyCode === 33 ? true : false; 22 23 } else { 24 25 isShift = window.event.shiftKey || e.keyCode === 33 ? true : false; 26 27 }; 28 29 currScrollPosition = (window.pageYOffset || doc.scrollTop) - (doc.clientTop || 0); 30 31 scrollToHere = newViewportHeight + currScrollPosition; 32 33 if (isShift) { 34 35 scrollToHere = currScrollPosition - newViewportHeight; 36 37 } 38 39 smoothScrollTo(scrollToHere) 40 41 } 42 43} 44 45window.smoothScrollTo = (function () { 46 47 var timer, start, factor; 48 49 return function (target) { 50 51 var offset = window.pageYOffset, 52 delta = target - window.pageYOffset; 53 54 start = Date.now(); 55 56 factor = 0; 57 58 if( timer ) { 59 60 clearInterval(timer); 61 62 } 63 64 function step() { 65 66 var y; 67 68 factor = (Date.now() - start) / duration; 69 70 if( factor >= 1 ) { 71 72 clearInterval(timer); 73 factor = 1; 74 75 } 76 77 y = factor * delta + offset; 78 79 window.scrollBy(0, y - window.pageYOffset); 80 81 } 82 83 timer = setInterval(step, 10); 84 85 return timer; 86 87 }; 88 89}()); 90 91window.onkeydown = keydown;
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.