MCPcopy Index your code
hub / github.com/browserless/browserless / scrollThroughPage

Function scrollThroughPage

src/utils.ts:653–683  ·  view source on GitHub ↗
(page: Page)

Source from the content-addressed store, hash-verified

651 * @param page Page
652 */
653export const scrollThroughPage = async (page: Page) => {
654 const viewport = (await page.viewport()) || {
655 height: 480,
656 width: 640,
657 }; // default Puppeteer viewport
658
659 await page.evaluate((bottomThreshold) => {
660 const scrollInterval = 100;
661 const scrollStep = Math.floor(window.innerHeight / 2);
662
663 function bottomPos() {
664 return window.pageYOffset + window.innerHeight;
665 }
666
667 return new Promise((resolve) => {
668 function scrollDown() {
669 window.scrollBy(0, scrollStep);
670
671 if (document.body.scrollHeight - bottomPos() < bottomThreshold) {
672 window.scrollTo(0, 0);
673 setTimeout(resolve, 500);
674 return;
675 }
676
677 setTimeout(scrollDown, scrollInterval);
678 }
679
680 scrollDown();
681 });
682 }, viewport.height);
683};
684
685export const noop = (): void => {};
686

Callers 1

handlerMethod · 0.85

Calls 1

scrollDownFunction · 0.85

Tested by

no test coverage detected