首页 > 解决方案 > 页面加载后如何手动调用dragscroll函数?

问题描述

我有以下用于页面加载时自动运行的拖动滚动代码。

但我想手动调用这个函数,因为我正在使用 DOM 元素更新 html。

我尝试过使用 window.factory 和 window.reset 但它对我不起作用。

我的 Javascript 模块文件:

   (function (root, factory) {
     if (typeof define === 'function' && define.amd) {
       define(['exports'], factory);
     } else if (typeof exports !== 'undefined') {
       factory(exports);
     } else {
       factory((root.dragscroll = {}));
     }
   }(this, function (exports) {
 var _window = window;
 var _document = document;
 var mousemove = 'mousemove';
 var mouseup = 'mouseup';
 var mousedown = 'mousedown';
 var EventListener = 'EventListener';
 var addEventListener = 'add'+EventListener;
 var removeEventListener = 'remove'+EventListener;
 var newScrollX, newScrollY;

 var dragged = [];
 var reset = function(i, el) {
  for (i = 0; i < dragged.length;)
   {
      <some code>
  }

  // cloning into array since HTMLCollection is updated dynamically
  dragged = [].slice.call(_document.getElementsByClassName('dragscroll'));
  for (i = 0; i < dragged.length;)
   {
     <some code>
     }, 0
    );

    _window[addEventListener](
     mouseup, cont.mu = function() {pushed = 0;}, 0
    );

    _window[addEventListener](
     mousemove,
     cont.mm = function(e) {
      if (pushed) {
       (scroller = el.scroller||el).scrollLeft -=
        newScrollX = (- lastClientX + (lastClientX=e.clientX));
       scroller.scrollTop -=
        newScrollY = (- lastClientY + (lastClientY=e.clientY));
       if (el == _document.body) {
        (scroller = _document.documentElement).scrollLeft -= newScrollX;
        scroller.scrollTop -= newScrollY;
       }
      }
     }, 0
    );
    })(dragged[i++]);
  }
 }


 if (_document.readyState == 'complete') {
  reset();
 } else {
  _window[addEventListener]('load', reset, 0);
 }

 exports.reset = reset;
}));
   })

我想手动调用上面的函数。

标签: javascriptjquery

解决方案


你能试试吗

window.dragscroll.reset();

这将手动调用您的重置功能。

让我知道它是否有帮助。


推荐阅读