t-comm
Version:
专业、稳定、纯粹的工具库
64 lines (57 loc) • 2.44 kB
JavaScript
;
var _regeneratorRuntime = require('@babel/runtime/regenerator');
var tslib_es6 = require('./tslib.es6-0d92ef81.js');
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
var _regeneratorRuntime__default = /*#__PURE__*/_interopDefaultLegacy(_regeneratorRuntime);
function autoScroll(element, page) {
var bottomTimes = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;
return tslib_es6.__awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime__default["default"].mark(function _callee() {
return _regeneratorRuntime__default["default"].wrap(function (_context) {
while (1) switch (_context.prev = _context.next) {
case 0:
_context.next = 1;
return page.evaluate(function (_ref) {
var element = _ref.element,
bottomTimes = _ref.bottomTimes;
return new Promise(function (resolve) {
var UNIT_DISTANCE = 100;
var ele = document.querySelector(element);
var totalHeight = 0;
var curBottomTimes = 0;
var lastScrollHeight = ele === null || ele === void 0 ? void 0 : ele.scrollHeight;
var doScroll = function doScroll(ele) {
totalHeight = ele.scrollTop + UNIT_DISTANCE;
ele.scrollTop = totalHeight;
};
var timer = setInterval(function () {
var scrollHeight = ele.scrollHeight;
doScroll(ele);
if (scrollHeight > lastScrollHeight) {
curBottomTimes += 1;
lastScrollHeight = scrollHeight;
}
console.log('[autoScroll] scrollHeight & totalHeight', scrollHeight, totalHeight);
if (totalHeight >= scrollHeight || bottomTimes && curBottomTimes > bottomTimes) {
console.log('[autoScroll] end');
clearInterval(timer);
resolve(1);
}
}, 100);
});
}, {
element: element,
bottomTimes: bottomTimes
});
case 1:
case "end":
return _context.stop();
}
}, _callee);
}));
}
var scroll = /*#__PURE__*/Object.freeze({
__proto__: null,
autoScroll: autoScroll
});
exports.autoScroll = autoScroll;
exports.scroll = scroll;