title: Mouse scroll key not working in Chrome & Firefox on website
body: <p>Check this website - <a href="https://www.eviltech.in/" rel="nofollow noreferrer">https://www.eviltech.in/</a></p>
  
  <p>The mouse scroll key is not working in Google Chrome &amp; Mozilla Firefox but it's working fine in Microsoft Edge. </p>
  
  <p><a href="https://stackoverflow.com/questions/19167329/my-webpage-wont-scroll-down">My webpage won&#39;t scroll down</a></p>
  
  <p>As suggested above the scroll key might not work if the CSS has <code>overflow:hidden</code> to <code>body</code> or <code>html</code> but that's not the case here. The scrollbar is visible in all browsers and the website can be scrolled by dragging the scrollbar.</p>
  
  <p>Is there any other case where this might happen? What is the solution for that?</p>
  
  <p><strong>UPDATE:</strong>
  The problem has been found in a javascript file <code>wow.js</code> by @ChrisHappy
  I can't remove the entire wow.js from the website as it performs crucial animations required on the website.</p>
  
  <p>Here are the <code>wow.js</code> codes:</p>
  
  <pre><code>(function() {
      var MutationObserver, Util, WeakMap, __bind = function(fn, me) {
              return function() {
                  return fn.apply(me, arguments)
              }
          },
          __indexOf = [].indexOf || function(item) {
              for (var i = 0, l = this.length; i &lt; l; i++) {
                  if (i in this &amp;&amp; this[i] === item) return i
              }
              return -1
          };
      Util = (function() {
          function Util() {}
          Util.prototype.extend = function(custom, defaults) {
              var key, value;
              for (key in custom) {
                  value = custom[key];
                  if (value != null) {
                      defaults[key] = value
                  }
              }
              return defaults
          };
          Util.prototype.isMobile = function(agent) {
              return /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(agent)
          };
          return Util
      })();
      WeakMap = this.WeakMap || this.MozWeakMap || (WeakMap = (function() {
          function WeakMap() {
              this.keys = [];
              this.values = []
          }
          WeakMap.prototype.get = function(key) {
              var i, item, _i, _len, _ref;
              _ref = this.keys;
              for (i = _i = 0, _len = _ref.length; _i &lt; _len; i = ++_i) {
                  item = _ref[i];
                  if (item === key) {
                      return this.values[i]
                  }
              }
          };
          WeakMap.prototype.set = function(key, value) {
              var i, item, _i, _len, _ref;
              _ref = this.keys;
              for (i = _i = 0, _len = _ref.length; _i &lt; _len; i = ++_i) {
                  item = _ref[i];
                  if (item === key) {
                      this.values[i] = value;
                      return
                  }
              }
              this.keys.push(key);
              return this.values.push(value)
          };
          return WeakMap
      })());
      MutationObserver = this.MutationObserver || this.WebkitMutationObserver || this.MozMutationObserver || (MutationObserver = (function() {
          function MutationObserver() {
              console.warn('MutationObserver is not supported by your browser.');
              console.warn('WOW.js cannot detect dom mutations, please call .sync() after loading new content.')
          }
          MutationObserver.notSupported = !0;
          MutationObserver.prototype.observe = function() {};
          return MutationObserver
      })());
      this.WOW = (function() {
          WOW.prototype.defaults = {
              boxClass: 'wow',
              animateClass: 'animated',
              offset: 0,
              mobile: !0,
              live: !0
          };
  
          function WOW(options) {
              if (options == null) {
                  options = {}
              }
              this.scrollCallback = __bind(this.scrollCallback, this);
              this.scrollHandler = __bind(this.scrollHandler, this);
              this.start = __bind(this.start, this);
              this.scrolled = !0;
              this.config = this.util().extend(options, this.defaults);
              this.animationNameCache = new WeakMap()
          }
          WOW.prototype.init = function() {
              var _ref;
              this.element = window.document.documentElement;
              if ((_ref = document.readyState) === "interactive" || _ref === "complete") {
                  this.start()
              } else {
                  document.addEventListener('DOMContentLoaded', this.start)
              }
              return this.finished = []
          };
          WOW.prototype.start = function() {
              var box, _i, _len, _ref;
              this.stopped = !1;
              this.boxes = this.element.getElementsByClassName(this.config.boxClass);
              this.all = (function() {
                  var _i, _len, _ref, _results;
                  _ref = this.boxes;
                  _results = [];
                  for (_i = 0, _len = _ref.length; _i &lt; _len; _i++) {
                      box = _ref[_i];
                      _results.push(box)
                  }
                  return _results
              }).call(this);
              if (this.boxes.length) {
                  if (this.disabled()) {
                      this.resetStyle()
                  } else {
                      _ref = this.boxes;
                      for (_i = 0, _len = _ref.length; _i &lt; _len; _i++) {
                          box = _ref[_i];
                          this.applyStyle(box, !0)
                      }
                      window.addEventListener('scroll', this.scrollHandler, !1);
                      window.addEventListener('resize', this.scrollHandler, !1);
                      this.interval = setInterval(this.scrollCallback, 50)
                  }
              }
              if (this.config.live) {
                  return new MutationObserver((function(_this) {
                      return function(records) {
                          var node, record, _j, _len1, _results;
                          _results = [];
                          for (_j = 0, _len1 = records.length; _j &lt; _len1; _j++) {
                              record = records[_j];
                              _results.push((function() {
                                  var _k, _len2, _ref1, _results1;
                                  _ref1 = record.addedNodes || [];
                                  _results1 = [];
                                  for (_k = 0, _len2 = _ref1.length; _k &lt; _len2; _k++) {
                                      node = _ref1[_k];
                                      _results1.push(this.doSync(node))
                                  }
                                  return _results1
                              }).call(_this))
                          }
                          return _results
                      }
                  })(this)).observe(document.body, {
                      childList: !0,
                      subtree: !0
                  })
              }
          };
          WOW.prototype.stop = function() {
              this.stopped = !0;
              window.removeEventListener('scroll', this.scrollHandler, !1);
              window.removeEventListener('resize', this.scrollHandler, !1);
              if (this.interval != null) {
                  return clearInterval(this.interval)
              }
          };
          WOW.prototype.sync = function(element) {
              if (MutationObserver.notSupported) {
                  return this.doSync(this.element)
              }
          };
          WOW.prototype.doSync = function(element) {
              var box, _i, _len, _ref, _results;
              if (!this.stopped) {
                  element || (element = this.element);
                  element = element.parentNode || element;
                  _ref = element.getElementsByClassName(this.config.boxClass);
                  _results = [];
                  for (_i = 0, _len = _ref.length; _i &lt; _len; _i++) {
                      box = _ref[_i];
                      if (__indexOf.call(this.all, box) &lt; 0) {
                          this.applyStyle(box, !0);
                          this.boxes.push(box);
                          this.all.push(box);
                          _results.push(this.scrolled = !0)
                      } else {
                          _results.push(void 0)
                      }
                  }
                  return _results
              }
          };
          WOW.prototype.show = function(box) {
              this.applyStyle(box);
              return box.className = "" + box.className + " " + this.config.animateClass
          };
          WOW.prototype.applyStyle = function(box, hidden) {
              var delay, duration, iteration;
              duration = box.getAttribute('data-wow-duration');
              delay = box.getAttribute('data-wow-delay');
              iteration = box.getAttribute('data-wow-iteration');
              return this.animate((function(_this) {
                  return function() {
                      return _this.customStyle(box, hidden, duration, delay, iteration)
                  }
              })(this))
          };
          WOW.prototype.animate = (function() {
              if ('requestAnimationFrame' in window) {
                  return function(callback) {
                      return window.requestAnimationFrame(callback)
                  }
              } else {
                  return function(callback) {
                      return callback()
                  }
              }
          })();
          WOW.prototype.resetStyle = function() {
              var box, _i, _len, _ref, _results;
              _ref = this.boxes;
              _results = [];
              for (_i = 0, _len = _ref.length; _i &lt; _len; _i++) {
                  box = _ref[_i];
                  _results.push(box.setAttribute('style', 'visibility: visible;'))
              }
              return _results
          };
          WOW.prototype.customStyle = function(box, hidden, duration, delay, iteration) {
              if (hidden) {
                  this.cacheAnimationName(box)
              }
              box.style.visibility = hidden ? 'hidden' : 'visible';
              if (duration) {
                  this.vendorSet(box.style, {
                      animationDuration: duration
                  })
              }
              if (delay) {
                  this.vendorSet(box.style, {
                      animationDelay: delay
                  })
              }
              if (iteration) {
                  this.vendorSet(box.style, {
                      animationIterationCount: iteration
                  })
              }
              this.vendorSet(box.style, {
                  animationName: hidden ? 'none' : this.cachedAnimationName(box)
              });
              return box
          };
          WOW.prototype.vendors = ["moz", "webkit"];
          WOW.prototype.vendorSet = function(elem, properties) {
              var name, value, vendor, _results;
              _results = [];
              for (name in properties) {
                  value = properties[name];
                  elem["" + name] = value;
                  _results.push((function() {
                      var _i, _len, _ref, _results1;
                      _ref = this.vendors;
                      _results1 = [];
                      for (_i = 0, _len = _ref.length; _i &lt; _len; _i++) {
                          vendor = _ref[_i];
                          _results1.push(elem["" + vendor + (name.charAt(0).toUpperCase()) + (name.substr(1))] = value)
                      }
                      return _results1
                  }).call(this))
              }
              return _results
          };
          WOW.prototype.vendorCSS = function(elem, property) {
              var result, style, vendor, _i, _len, _ref;
              style = window.getComputedStyle(elem);
              result = style.getPropertyCSSValue(property);
              _ref = this.vendors;
              for (_i = 0, _len = _ref.length; _i &lt; _len; _i++) {
                  vendor = _ref[_i];
                  result = result || style.getPropertyCSSValue("-" + vendor + "-" + property)
              }
              return result
          };
          WOW.prototype.animationName = function(box) {
              var animationName;
              try {
                  animationName = this.vendorCSS(box, 'animation-name').cssText
              } catch (_error) {
                  animationName = window.getComputedStyle(box).getPropertyValue('animation-name')
              }
              if (animationName === 'none') {
                  return ''
              } else {
                  return animationName
              }
          };
          WOW.prototype.cacheAnimationName = function(box) {
              return this.animationNameCache.set(box, this.animationName(box))
          };
          WOW.prototype.cachedAnimationName = function(box) {
              return this.animationNameCache.get(box)
          };
          WOW.prototype.scrollHandler = function() {
              return this.scrolled = !0
          };
          WOW.prototype.scrollCallback = function() {
              var box;
              if (this.scrolled) {
                  this.scrolled = !1;
                  this.boxes = (function() {
                      var _i, _len, _ref, _results;
                      _ref = this.boxes;
                      _results = [];
                      for (_i = 0, _len = _ref.length; _i &lt; _len; _i++) {
                          box = _ref[_i];
                          if (!(box)) {
                              continue
                          }
                          if (this.isVisible(box)) {
                              this.show(box);
                              continue
                          }
                          _results.push(box)
                      }
                      return _results
                  }).call(this);
                  if (!(this.boxes.length || this.config.live)) {
                      return this.stop()
                  }
              }
          };
          WOW.prototype.offsetTop = function(element) {
              var top;
              while (element.offsetTop === void 0) {
                  element = element.parentNode
              }
              top = element.offsetTop;
              while (element = element.offsetParent) {
                  top += element.offsetTop
              }
              return top
          };
          WOW.prototype.isVisible = function(box) {
              var bottom, offset, top, viewBottom, viewTop;
              offset = box.getAttribute('data-wow-offset') || this.config.offset;
              viewTop = window.pageYOffset;
              viewBottom = viewTop + this.element.clientHeight - offset;
              top = this.offsetTop(box);
              bottom = top + box.clientHeight;
              return top &lt;= viewBottom &amp;&amp; bottom &gt;= viewTop
          };
          WOW.prototype.util = function() {
              return this._util || (this._util = new Util())
          };
          WOW.prototype.disabled = function() {
              return !this.config.mobile &amp;&amp; this.util().isMobile(navigator.userAgent)
          };
          return WOW
      })()
  }).call(this)
  </code></pre>
  
  <p>Is it possible to remove the lines of codes which are affecting the scrolling without affecting other functionalities here?</p>
  
  <p><strong>UPDATE 2:</strong> I tried removing entire <code>wow.js</code> but still the scrolling was not fixed and lots of vital functions stopped working.
  That means the issue is not with the <code>wow.js</code> file.</p>
  
  <p>Is there anything else that might be causing this issue?</p>