Javascript 用户脚本以单击一个";刷新“;每分钟按一次按钮,有输入时除外?
我正在尝试创建一个Tampermonkey脚本,它可以每隔一段时间(最好是每分钟)单击页面的“刷新”按钮 如果您在站点上执行其他操作(如键入)时它可以暂停会更好,但这是更可选的 原因是我们正在使用一个网站,需要我们及时跟踪收到的客户请求,但该网站只有一个集成的刷新按钮,需要手动单击,而不是自动刷新 有一些浏览器插件可以满足我的需要,但它们会刷新整个网页,从而导致它丢失以前做过的重要信息或设置。(站点上的“刷新”按钮不会出现这种情况) 我找到的是setInterval和.click函数。 我设置的是以下内容,有时有效,有时无效。 但每次它真的起作用时,它都不会停止,即使是在使猴子瘫痪的时候Javascript 用户脚本以单击一个";刷新“;每分钟按一次按钮,有输入时除外?,javascript,click,greasemonkey,tampermonkey,Javascript,Click,Greasemonkey,Tampermonkey,我正在尝试创建一个Tampermonkey脚本,它可以每隔一段时间(最好是每分钟)单击页面的“刷新”按钮 如果您在站点上执行其他操作(如键入)时它可以暂停会更好,但这是更可选的 原因是我们正在使用一个网站,需要我们及时跟踪收到的客户请求,但该网站只有一个集成的刷新按钮,需要手动单击,而不是自动刷新 有一些浏览器插件可以满足我的需要,但它们会刷新整个网页,从而导致它丢失以前做过的重要信息或设置。(站点上的“刷新”按钮不会出现这种情况) 我找到的是setInterval和.click函数。 我设置的
// ==UserScript==
// @name Ticket System - Auto Refresh
// @namespace http://tampermonkey.net/
// @version 0.1
// @description try to take over the world!
// @author You
// @match https://my*******.***.****mand.com/*
// @grant none
// ==/UserScript==
setInterval(function () {document.getElementById("buttonOcLMZKwM8KoKda967hf2B0_11").click();}, 10000);
//end
我可能在上面所做的工作中有一些重大缺陷,但正如我所说,我没有使用javascript的经验。此外,所用的时间是测试,以便快速查看它是否有效
正如你可能看到的那样,我已经在刷新部分卡住了,所以输入时的停止部分甚至没有远程完成
我也用过
document.getElementById("buttonOcLMZKwM8KoKda967hf2B0_11")
当你再次登录时,网站倾向于更改这个ID,所以很可能会失败。因此,我尝试使用以下方法:
document.querySelector('[title="Refresh"]');
但这似乎根本不起作用,即使按钮的标题是刷新
这是网站上的完整按钮HTML:
<button type="button" id="buttonOcLMZKwM8KoKda967hf2B0_11" data-sap-ui="buttonOcLMZKwM8KoKda967hf2B0_11"
data-sap-automation-id="OcLMZKwM8KoKda967hf2B0" title="Refresh" role="button"
aria-disabled="false" tabindex="0" class="sapUiBtn sapUiBtnIconOnly sapUiBtnLite sapUiBtnS width-button-form sapUiBtnStd">
<img id="buttonOcLMZKwM8KoKda967hf2B0_11-img" src="https://.........TbRefresh.png"
alt="Refresh" class="sapUiBtnIco"></button>
我非常感谢能得到的任何帮助 开始和停止轮询,或间隔单击等。;仅仅是:
setInterval()调用的值。
例如:var myTimer=setInterval(someFunction,1000)代码>
clearInterval()
以停止循环。例如:
clearInterval(myTimer)代码>
******
块上方的部分)。要查看它的运行情况,请运行代码段
/==UserScript==
//@name\u定期点击按钮,带有启动/停止控制
//@match*://YOUR_SERVER.COM/YOUR_PATH/*
//@需要https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js
//@grant GM_addStyle
//==/UserScript==
//---初始化刷新按钮循环和控件。
var rfrshBtnSel='按钮[title=“刷新”];//用于刷新的jQuery选择器
var rfrshTmr=LoopManager(单击刷新按钮,1000);//1000毫秒=1秒。
var loopStBtn=LoopButtonManager(rfrshTmr.toggle);
rfrshTmr.setCallbacks(loopStBtn.start、loopStBtn.stop、loopStBtn.error);
rfrshTmr.start();//开始循环刷新btn单击。
$(窗口).keydown(键盘快捷手柄);
//---使用某些表单控件时,请停止刷新计时器:
$(“正文”)。在(
“单击向下键焦点粘贴滚动”,“输入,文本区域,选择”,rfrshTmr.stop
);
//---单击刷新按钮后,(重新)启动刷新计时器:
$(“正文”)。在(“单击”,rfrshBtnSel,rfrshTmr.start);
功能单击刷新按钮(){
var refreshBtn=$(rfrshBtnSel);
如果(refreshBtn.length==1)单击节点(refreshBtn);
else loopStBtn.error(“未找到刷新按钮!”);
}
功能键盘快捷手柄(zEvent){
如果(zEvent.which==120){//在F9上,则切换循环状态。
rfrshTmr.toggle();
返回false;
}
返回true;
}
函数clickNode(jNode){
var clickEvent=document.createEvent('MouseEvents');
clickEvent.initEvent('click',true,true);
jNode[0]。dispatchEvent(clickEvent);
}
功能环路管理器(callbackFnc、IntrVLMilliesec、bAutoStart等optParams){
var _thisInterval=null;
var _startCB=null,_stopCB=null,_errorCB=null;
如果(bAutoStart)u start();
函数_start(){
如果(!\u此间隔){
_thisInterval=setInterval(callbackFnc、intrvlMillisec、optParams);
}
如果(_startCB)_startCB();
}
函数_stop(){
净空间隔(_thisInterval);
_thisInterval=null;
如果(_stopCB)_stopCB();
}
函数_切换(){
如果(_thisInterval)_stop();
否则就开始吧;
}
函数设置回调(startCB、stopCB、errorCB){
_startCB=startCB;_stopCB=stopCB;_errorCB=errorCB;
}
返回{
开始:\开始,停止:\停止,设置回调:\设置回调,切换:\切换
};
}
函数LoopButtonManager(单击CB){
var _btnNode=$('tmStartStopBtn');
如果(_btnNode.length==0){
_btnNode=$(`
待定(F9)
`)。附于(“正文”);
}
var _spanNode=_btnNode.find(“span”);
_btnNode.click(clickCB);
函数_start(){
设置显示(“正在运行”、“正在运行”);
}
函数_stop(){
设置按钮显示(“停止”,“刷新停止”);
}
函数错误(errMess){
console.error(“TM:+errmes”);
setButtonDisplay(“请参阅控制台!”,“tmError”);
}
函数s