ubuntu 发表于 2024-2-4 21:21:21

求助页面按钮无法点击

本人js零基础,依葫芦画瓢写签到脚本发现有个按钮无法点击(我禁用了编辑器代码,希望能显示出代码):

<a class="but c-blue ml10 pw-1em radius initiate-checkin" href="javascript:;" form-action="user_checkin" ed-text="<i class="fa fa-calendar-check-o"></i>已签到"><i class="fa fa-calendar-check-o"></i>签到</a>

后面相关的:

<script>
        $(".initiate-checkin").click(function() {
                $(".flip_checkin").click();
                $(".flip_checkin").remove();
        })
</script>
<span data-class="modal-mini xy_flip_checkin" mobile-bottom="true" data-height="240"
data-remote="https://zxcsol.com/wp-admin/admin-ajax.php?action=Nine_grid_modal"
class="flip_checkin" href="javascript:;" data-toggle="RefreshModal">
</span>

尝试比如直接通过class过滤
document.querySelector('a.initiate-checkin').click();

尝试直接调用点击功能
$(".flip_checkin").click();

或者
document.querySelector(".flip_checkin").click();


再或者通过文字来过滤
var buttons = document.querySelectorAll('a.initiate-checkin');
for (var i = 0; i < buttons.length; i++) {
        if (buttons.textContent.trim() === '签到') {
                console.log(buttons);
                buttons.click(); // 模拟点击该按钮
                break; // 找到并点击按钮后跳出循环
        }
}

直接click不行,我还试了
buttons.dispatchEvent(new MouseEvent('click'));

通过console.log的输出,我确定是找到按钮了,为啥没有效果呢?

Str_i 发表于 2024-2-4 21:21:22

```javascript
// ==UserScript==
// @name         New Userscript
// @namespace    http://tampermonkey.net/
// @version      2024-02-05
// @descriptiontry to take over the world!
// @author       You
// @match      https://zxcsol.com/user/
// @icon         https://www.google.com/s2/favicons?sz=64&domain=zxcsol.com
// @grant      none
// ==/UserScript==

(function () {
    'use strict';

    // 如果像我这样直接写的话,console.log()会输出元素,但是不会触发 click 事件。
    // 我猜你应该也是这么写的。
    // console.log(document.querySelector('a.but.c-blue.ml10.pw-1em.radius.checkin-details-link'));
    // document.querySelector('a.but.c-blue.ml10.pw-1em.radius.checkin-details-link').click();

    // 尝试了两种解决方式,如果点击不到可以自己更改一下选择器哈,早上不小心直接点击签到了,不知道选择器正不正确了。
    // 或者更改一下脚本的匹配地址,希望能够帮到你。

    // 第一种
    window.onload = function () {
      console.log('当整个页面,包括样式、图片和其他资源被加载完成时,会触发 window 对象上的 load 事件。');
      document.querySelector('a.but.c-blue.ml10.pw-1em.radius.checkin-details-link').click();
    };

    // 第二种
    //   setTimeout(function () {
    //         console.log('延时2秒后执行。');
    //         document.querySelector('a.but.c-blue.ml10.pw-1em.radius.checkin-details-link').click();
    //   }, 2000);

})();
```

Str_i 发表于 2024-2-5 01:19:44

请问有地址吗?调试一下才知道问题,光看我看不明白。才疏学浅{:4_98:}

ubuntu 发表于 2024-2-5 09:38:59

Str_i 发表于 2024-2-5 01:19
请问有地址吗?调试一下才知道问题,光看我看不明白。才疏学浅

https://zxcsol.com/user/balance

juhua1 发表于 2024-2-5 13:41:53

本帖最后由 juhua1 于 2024-2-5 13:53 编辑

你说的是个人页面的签到按钮吗,我试了可以直接click(),会不会是你脚本执行时间问题


$(function(){
    var button = $("a.but.c-blue.ml10.pw-1em.radius.checkin-details-link")[0]
    console.log(button)
    button.click()
})

页: [1]
查看完整版本: 求助页面按钮无法点击