關(guān)于虎牙原神直播激勵(lì)的js腳本失效的解決方案
前幾天看 @佳佳佳錦 大佬的視頻,學(xué)習(xí)了一下js寫腳本的操作。但是在使用過程中發(fā)現(xiàn),刷新之后就不會(huì)再點(diǎn)擊領(lǐng)取按鈕了。
因?yàn)槲沂峭耆膉s小白,所以一時(shí)也不會(huì)改,試了下能查到的各種函數(shù),猜測(cè)可能是腳本無法識(shí)別刷新后的按鈕,因此一旦點(diǎn)擊了刷新,通過識(shí)別tagname來點(diǎn)擊的操作都會(huì)失效。

我想,既然無法直接鎖定按鈕,那就通過點(diǎn)擊坐標(biāo)位置的方式來間接點(diǎn)擊按鈕。經(jīng)過嘗試,證實(shí)了這個(gè)方案是有效的,腳本在點(diǎn)擊刷新之后依然可以正確的點(diǎn)擊領(lǐng)取按鈕,以下是修改后的代碼:
function Reflash(){
document.getElementsByClassName('reload J_reload')[1].click();
}
function GetPrimogems(){
document.elementFromPoint(600-window.pageXOffset,2280-window.pageYOffset).click();
}//600:2280位置可用于領(lǐng)取第五天獎(jiǎng)勵(lì),可更改。
function A(){
setInterval(Reflash,1000);
setInterval(GetPrimogems,500);
}//刷新按鈕每1000ms點(diǎn)擊一次,搶原石按鈕每500ms點(diǎn)一次??筛?。
Mytime=2*60*60//此處為開始搶購的時(shí)間,當(dāng)前為2時(shí)整,可更改。
Timer=Mytime-(new Date().getHours()*60*60+new Date().getMinutes()*60+new Date().getSeconds());
setTimeout(A,Timer*1000);


這個(gè)代碼比較麻煩的地方就在于需要手動(dòng)輸入坐標(biāo),獲取坐標(biāo)需要以下代碼:
document.onclick=function(e)
{
var x=e.pageX;
var y=e.pageY;
alert(x+":"+y);
}
用得到的數(shù)值替換600和2280,即可點(diǎn)擊你希望點(diǎn)擊的位置。


請(qǐng)注意:執(zhí)行此代碼時(shí)務(wù)必保證頁面縮放比例100%以上,否則點(diǎn)擊位置將不準(zhǔn)確。
ps:本人是實(shí)實(shí)在在的js小白,此代碼僅保證有效,難免屬于脫褲子放屁。歡迎指教。

附上 @佳佳佳錦 大佬的頁面1代碼:
function star(){
var btn1=document.getElementsByTagName('button')[14]
f2=setInterval(()=>{btn1.click()},200)}
d1=new Date()
time1=(2*60*60)-(d1.getHours()*60*60+d1.getSeconds()+d1.getMinutes()*60)
setTimeout(star,1000*time1)