有时候,一些签到按钮,签到完成之后是依然可以点击的。如果只是用 id 来获取到元素,然后点击,就会导致明明签到完成了,还继续点击按钮。
此时我们可以加入一个判断条件。看来还是得拿个实际例子,王者荣耀 - 虾哥论坛
这个网站,我们没有账号也可以访问,我们可以看到它有一个「签到」按钮。
<a href="javascript:to_sign(fid, uid)" class="checkin-btn follow-show" id="checkin-btn"><span>签到</span></a> |
由于它有 id ,所以获取起来很简单
document.getElementById('checkin-btn') |
我有这个论坛的账号,我知道点击之后,按钮的文字,会从签到
变成 已签到
。
那么我们要做的就是,在执行点击之前,判断一下,里面的文字是否 签到
// ==UserScript== |
完整的代码如下,我发现用 // @run-at document-idle
似乎有些问题,所以改成了事件监听。
有些签到按钮,点击之后文字就会发生变化。
签到前 | 签到后 |
---|---|
签到 | 已签到 |
签到 | 已签 |
像这种我们可以直接用 ==
来判断里面的字符串,但是有的时候,我们想要的是,判断里面的文字,是否包含某些字符串。
例如,有些网站,它的签到按钮文字是 领取今日的登录奖励
我们可以用 includes()
方法来判断。
if (btn.textContent.includes('领取今日')) btn.click() |
这行代码,就是判断是否包含 领取今日
这几个字,如果是,就点击。