logyes 发表于 2024-5-26 13:11:56

自动登录脚本的问题

我现在想做一个自动登录的脚本,但是我遇到了一点问题。
我在监听load的时候触发回调函数执行fillForms

```
window.addEventListener("load", () => {
    const currentURL = window.location.href;
    if (currentURL.includes("https://xxx.com/login")) {
      fillForms(getRandomAccount());
    }
});
```

这是fillForms函数的逻辑

```
function fillForms(account) {
    document.querySelector('input').value = account.username;
    document.querySelector('input').value = account.password;
    let submitbutton = document.querySelector('button');
    console.log(submitbutton);
    console.log(submitbutton.click);
    if (submitbutton) {
      console.log(submitbutton);
      submitbutton.click();
    }

    // setTimeout(() => submitbutton.click(), 1000);

    localStorage.setItem("account", account);
}
```

其中页面执行脚本后,submitbutton的节点可以正常输出,但是我的登录页面并不会跳转,我怀疑它没有执行click函数,所以我在注释里面使用延时函数去触发click事件,结果延时触发页面发生了成功跳转登录成功了,为什么呢?我的代码该做怎么样的改进才能直接去触发click事件,而不需要使用延时函数

李恒道 发表于 2024-5-26 20:50:24

页面延迟加载的问题https://learn.scriptcat.org/%E5%B8%B8%E8%A7%81%E9%97%AE%E9%A2%98/%E5%B8%B8%E8%A7%81%E8%AF%AF%E5%8C%BA1/

最常用的就是setinteval循环查看

再往上可以用addeveterlistner监听DomInserted事件,但是存在延迟,目前更普遍的是使用MutationObserve
https://learn.scriptcat.org/%E5%AE%9E%E7%94%A8%E7%9F%A5%E8%AF%86%E5%BA%93/JavaScript%20%E7%9F%A5%E8%AF%86%E7%AF%87/MutationObserve%20%E7%9F%A5%E8%AF%86/

在此之上更推荐cxxjackie大佬封装的ElementGetter 库
https://bbs.tampermonkey.net.cn/thread-2726-1-1.html


页: [1]
查看完整版本: 自动登录脚本的问题