t-comm
Version:
专业、稳定、纯粹的工具库
57 lines (53 loc) • 2.15 kB
JavaScript
import _regeneratorRuntime from '@babel/runtime/regenerator';
import { _ as __awaiter } from './tslib.es6-848120af.js';
function autoScroll(element, page) {
var bottomTimes = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;
return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime.mark(function _callee() {
return _regeneratorRuntime.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
});
export { autoScroll as a, scroll as s };