Javascript 用户脚本以单击一个";刷新“;每分钟按一次按钮,有输入时除外?

Javascript 用户脚本以单击一个";刷新“;每分钟按一次按钮,有输入时除外?,javascript,click,greasemonkey,tampermonkey,Javascript,Click,Greasemonkey,Tampermonkey,我正在尝试创建一个Tampermonkey脚本,它可以每隔一段时间(最好是每分钟)单击页面的“刷新”按钮 如果您在站点上执行其他操作(如键入)时它可以暂停会更好,但这是更可选的 原因是我们正在使用一个网站,需要我们及时跟踪收到的客户请求,但该网站只有一个集成的刷新按钮,需要手动单击,而不是自动刷新 有一些浏览器插件可以满足我的需要,但它们会刷新整个网页,从而导致它丢失以前做过的重要信息或设置。(站点上的“刷新”按钮不会出现这种情况) 我找到的是setInterval和.click函数。 我设置的

我正在尝试创建一个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)
  • 当然,用户界面是最难的部分。我想:

  • 将状态和控制按钮置于屏幕右上角
  • 绑定键盘快捷键,无需鼠标即可切换循环
  • 以下用户脚本执行上述所有操作,另外:

  • 在循环的每次迭代中单击“刷新”按钮
  • 单击控制按钮时停止/重新启动循环
  • 按下F9时停止/重新启动(取决于焦点所在位置)
  • 选择或键入其中一个表单控件时停止循环
  • 单击“刷新”按钮时重新启动循环
  • 这是一个完整的工作用户脚本(它只是
    ******
    块上方的部分)。
    要查看它的运行情况,请运行代码段

    /==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