loading.js 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. // +---------------------------------------------------------------------
  2. // | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
  3. // +---------------------------------------------------------------------
  4. // | Copyright (c) 2016~2023 https://www.crmeb.com All rights reserved.
  5. // +---------------------------------------------------------------------
  6. // | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
  7. // +---------------------------------------------------------------------
  8. // | Author: CRMEB Team <admin@crmeb.com>
  9. // +---------------------------------------------------------------------
  10. const events = [];
  11. const $scroll = function (dom, fn) {
  12. events.push({ dom, fn });
  13. fn._index = events.length - 1;
  14. };
  15. $scroll.remove = function (fn) {
  16. fn._index && events.splice(fn._index, 1);
  17. };
  18. //上拉加载;
  19. const Scroll = {
  20. addHandler: function (element, type, handler) {
  21. if (element.addEventListener) element.addEventListener(type, handler, false);
  22. else if (element.attachEvent) element.attachEvent('on' + type, handler);
  23. else element['on' + type] = handler;
  24. },
  25. listenTouchDirection: function () {
  26. this.addHandler(window, 'scroll', function () {
  27. const wh = window.innerHeight,
  28. st = window.scrollY;
  29. events
  30. .filter((e) => e.dom.scrollHeight && e.dom.scrollHeight > 0)
  31. .forEach((e) => {
  32. var dh = e.dom.scrollHeight;
  33. var s = Math.ceil((st / (dh - wh)) * 100);
  34. if (s > 85) e.fn();
  35. });
  36. });
  37. },
  38. };
  39. Scroll.listenTouchDirection();
  40. export default $scroll;
  41. export { Scroll };