Blame view

bower_components/Materialize/js/scrollFire.js 1.19 KB
74249687   Luigi Serra   Cross browser con...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
  (function($) {
  
    // Input: Array of JSON objects {selector, offset, callback}
  
    Materialize.scrollFire = function(options) {
  
      var didScroll = false;
  
      window.addEventListener("scroll", function() {
        didScroll = true;
      });
  
      // Rate limit to 100ms
      setInterval(function() {
        if(didScroll) {
            didScroll = false;
  
            var windowScroll = window.pageYOffset + window.innerHeight;
  
            for (var i = 0 ; i < options.length; i++) {
              // Get options from each line
              var value = options[i];
              var selector = value.selector,
                  offset = value.offset,
                  callback = value.callback;
  
              var currentElement = document.querySelector(selector);
              if ( currentElement !== null) {
                var elementOffset = currentElement.getBoundingClientRect().top + window.pageYOffset;
  
                if (windowScroll > (elementOffset + offset)) {
                  if (value.done !== true) {
                    var callbackFunc = new Function(callback);
                    callbackFunc();
                    value.done = true;
                  }
                }
              }
            }
        }
      }, 100);
    };
  
  })(jQuery);