首页 > 解决方案 > Electron javascript 仅在 devtools 打开时工作

问题描述

我有一个利用电子和 puppeteer 的程序。当用户向下滚动到电子应用程序页面的底部时,puppeteer 被触发向下滚动以加载更多列表项,这些列表项依次加载到电子应用程序页面上。在一个 html 电子页面上,脚本有效。它使用一个函数来加载 10 个项目,添加一个滚动事件侦听器,当触发时将使用上述函数加载另外 10 个项目。但是在不同的 html 电子页面上,使用相同的函数它将加载十个不同的项目,添加滚动事件侦听器并尝试在用户滚动时继续尝试加载十个。问题是它在前十个加载,然后在用户滚动到底部时无法加载到其他十个,除非开发工具在电子应用程序中打开。我已经通过在用户滚动时创建警报窗口对其进行了测试,因此我知道事件侦听器已正确附加到文档中。我在控制台中没有收到错误,因为它在控制台打开时工作。

容器.js

let lastContainer, maxScrollY = getMaxScrollY(), loading = false, newPage = true, songData; //These reset after a new page has loaded 

const createContainers = (page, createContainer) => {
    const conPerCycle = 10;

    containers(conPerCycle, createContainer, page); // Initial Loader; Loads data, creates container, adds data to container

    document.addEventListener('scroll', (e) => {
        if (Math.floor(window.scrollY) == maxScrollY && !loading) {
            newPage = false;
            containers(conPerCycle, createContainer, page); // Triggered Loader; Loads data, creates container, adds data to container
        }
    });
}; 

标签: javascripthtmlasynchronouselectronpuppeteer

解决方案


Math.floor(window.scrollY)不相等maxScrollY,因为我正在使用它少了一个像素Math.floor,将其更改为Math.ceil并开始工作,案例关闭!


推荐阅读