【问题标题】:Tampermonkey script keeps clicking on buttonTampermonkey 脚本不断点击按钮
【发布时间】:2020-05-14 07:40:16
【问题描述】:

我对 Javascript/Tampermonkey 完全陌生。我正在尝试制作一个 Tampermonkey 脚本,该脚本在页面加载后(快速)单击特定页面按钮一次。鼠标点击后,网站要求验证。验证必须手动完成。

这是网站上按钮的代码:

<button class="btn  btn--arrow  push-right  js-continue-scrollposition" type="submit" id="btnSave" name="Command" value="plaats">Send</button>

这是我在 Tampermonkey 中的脚本:

// ==UserScript==
// @name         Test
// @namespace    Test
// @version      1
// @description  test
// @author       Me
// @match        LINK OF THE WEBSITE HERE
// @grant        none
// ==/UserScript==
(function() {
document.querySelector("#btnSave").click();

})();

这段代码似乎工作正常,但只有一个问题。该脚本不断向网站上的按钮发送垃圾邮件。我只想在按钮上生成一个(快!)鼠标单击,然后需要停止或暂停脚本,以便我可以进行验证。我忙了一整天,但我找不到解决办法。也许有人可以帮忙?

请记住,我对此完全陌生。这是我使用所有这些的第一天。

【问题讨论】:

  • 点击按钮时会发生什么?也许它会重新加载页面,然后脚本在页面重新加载后再次运行(这可能会造成无限循环)
  • 点击后,在同一页面中打开reCaptcha验证,并且“btnSave”按钮仍然可见。我该怎么做才能防止脚本循环?

标签: javascript greasemonkey tampermonkey


【解决方案1】:

解决这个问题的一种方法。

创建一个名为“isClicked”的布尔值并将其设置为 false,然后在运行代码时检查脚本是否单击了按钮,如果是,则将布尔值更改为 true。然后停止函数。

// ==UserScript==
// @name         Test
// @namespace    Test
// @version      1
// @description  test
// @require      https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js
// @author       Me
// @match        LINK OF THE WEBSITE HERE
// @grant        none
// ==/UserScript==

var $ = window.$;                //  Avoids warnings in TamperMonkey
var isClicked = false;

window.setInterval(function(){
   if(!isClicked){               //  !isClicked checks if the boolean is not true
      $("#btnSave").click();
   }
}, 1000);                        //  1000 stands for the refresh rate of this function in milliseconds

$("#btnSave").click(function(){  //  Functions when button is clicked
   isClicked = true;
}); 

这个答案使用jQuery (JavaScript Library) 来简化javascript。

注意:您必须通过以下方式在 Meta/Header "UserScript" 中导入 jQuery 库:

// @require https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js

【讨论】:

    猜你喜欢
    • 2018-05-15
    • 1970-01-01
    • 2014-07-22
    • 1970-01-01
    • 1970-01-01
    • 2018-09-26
    • 1970-01-01
    • 2023-02-06
    • 1970-01-01
    相关资源
    最近更新 更多