Javascript 使用Tampermonkey插入控制按钮自动单击的复选框
我想创建3个复选框,选中后会定期单击按钮(每个) 左键和中键是相同的,只是美感不同。像这样:Javascript 使用Tampermonkey插入控制按钮自动单击的复选框,javascript,jquery,userscripts,tampermonkey,Javascript,Jquery,Userscripts,Tampermonkey,我想创建3个复选框,选中后会定期单击按钮(每个) 左键和中键是相同的,只是美感不同。像这样: <a id="fightButtonBerserk1" name="defender" value="Berserk" class="button foundation-style smallhelp profileButton fightButton" title="" href="#"> <i class="icon-friends"></i>Berserk!
<a id="fightButtonBerserk1" name="defender" value="Berserk" class="button foundation-style smallhelp profileButton fightButton" title="" href="#">
<i class="icon-friends"></i>Berserk! (5 golpes)</a>
有人能帮我吗?那么,您正试图激活这些复选框,以便在选中时触发计时器,在未选中时取消计时器 如果是:
change
事件添加一个侦听器(以便键盘和鼠标都能工作)data-
属性,以便代码知道哪个目标与哪个复选框匹配(专业提示:单击“运行代码段”按钮后,但在选中复选框之前,点击所述按钮右侧的“完整页面”链接。)
函数添加元素(){
var newNodes=$(`
左击
中锋
右击
` );
//--最好添加一个节点,但现在垃圾邮件内联样式。。。
newNodes.find(“输入”).attr(“样式”,“边距:1px!重要;行高:10px!重要;”);
newNodes.find(“标签”).attr(“样式”,“右边距:20px;”);
newNodes.insertAfter($('.foundation radius.fightContainer.foundation base font')[1]);
//--激活复选框
$(.myspamcontrols”)。在(“更改”、“输入[data trgtSelctr]”上,ProcessMy复选框);
}
添加元素();
函数进程我的复选框(zEvent){
var chkBox=zEvent.target;
//--如果现在选中该框,则立即单击并启动计时器
如果(chkBox.checked){
单击按钮byjqueryselector(chkBox.dataset.trgtselctr);
//chkBox.spamClckTmr=setInterval(单击按钮byjqueryselector,30000,chkBox.dataset.trgtselctr);
chkBox.spamClckTmr=setInterval(单击按钮byjqueryselector,2222,chkBox.dataset.trgtselctr);
chkBox.pageReloadTmr=setTimeout(location.reload.bind(window.location),300000);
}
//--否则,如果现在未选中此框,请取消计时器
否则{
clearInterval(chkBox.spamClckTmr);
clearTimeout(chkBox.pagerLoadTMR);
}
}
功能单击按钮BYJQUERYSELECTOR(jQuerySelector){
var targetNode=$(jQuerySelector)[0];
if(targetNode){
console.log(“单击节点:”,jQuerySelector);
//--我的警告并不总是足够的。请参阅https://stackoverflow.com/q/15048223
targetNode.click();
}
否则{
console.warn(`Node[${jQuerySelector}]未找到!`);
}
}
/********************************************************************
*******此块下面的所有内容,包括HTML和*******
*******CSS块,是模拟的目标页面*******
*******它不是用户脚本的一部分*******
********************************************************************/
$(“按钮”)。单击(zEvent=>{
console.log(`Button${zEvent.target.textContent}单击。`);
} );代码>
.myspamcontrols{
边缘:1米;
边框:1px纯绿色;
边界半径:0.5ex;
填料:1×1米;
}
战斗1
狂暴1
狂暴2
狂暴3
第二场战斗
这非常有效,谢谢。但是,在页面自动更新之后,如何保持复选框处于选中状态,而只保留选中的复选框?因为它正在停止脚本。@johannesinederauer,这是一个新的/不同类型的问题。你需要为此搜索和/或问一个新问题。但是,本质上,您需要在重新加载之间保存复选框状态,例如:sessionStorage
,或gmu setValue
,等等。
<a id="fightButtonBerserk2" name="attacker" value="Berserk" class="button foundation-style smallhelp profileButton fightButton" title="" href="#">
<i class="icon-friends"></i>Berserk! (5 golpes)</a>
function addDomElements(){var a=$('<div class="foundation-radius fightContainer foundation-base-font"></div>'),
b=$('<input type="checkbox" class="smallerBox" id="EsquerdaHitBox" name="EsquerdaHitBox" style="margin:1px !important;line-height:10px !important;">'),
c=$('<label class="checkboxlabel" for="EsquerdaHitBox" style="margin-right: 20px;">Hit Left</label>'),
d=$('<input type="checkbox" class="smallerBox" id="MeioHitBox" name="MeioHitBox" style="margin:1px !important;line-height:10px !important;">'),
e=$('<label class="checkboxlabel" for="MeioHitBox" style="margin-right: 20px;">Hit Middle</label>'),
f=$('<input type="checkbox" class="smallerBox" id="DireitaHitkBox" name="DireitaHitkBox" style="margin:1px !important;line-height:10px !important;">'),
g=$('<label class="checkboxlabel" for="DireitaHitkBox" style="margin-right: 20px;">Hit Right</label>');
a.append(b),a.append(c),a.append(d),a.append(e),a.append(f),a.append(g),
$(a).insertAfter($('[class="foundation-radius fightContainer foundation-base-font"]')[1])}
var button=document.getElementById("fightButtonBerserk1");
setInterval(function(){
button.click();
}, 30000);
var i = setInterval(function() {
window.location.reload();
}, 300000);