Javascript 按钮单击在自单击时起作用,而不是自动单击

Javascript 按钮单击在自单击时起作用,而不是自动单击,javascript,setinterval,greasemonkey,Javascript,Setinterval,Greasemonkey,我是新来的。我试图与greasemonkey合作,复制流亡贸易搜索路径上的所有耳语 当我点击我自己创建的meta按钮时,一切都很好。但是当我通过SetInterval运行函数时,它会删除按钮,并且不会在之前单击它们 我错过了什么?我已经试过很多了 // ==UserScript== // @name test // @namespace https://nope // @version 0.0.0.1 // @description clicks whisper

我是新来的。我试图与greasemonkey合作,复制流亡贸易搜索路径上的所有耳语

当我点击我自己创建的meta按钮时,一切都很好。但是当我通过SetInterval运行函数时,它会删除按钮,并且不会在之前单击它们

我错过了什么?我已经试过很多了

// ==UserScript==
// @name         test
// @namespace    https://nope
// @version      0.0.0.1
// @description  clicks whispers of poe-trade
// @author       PJ
// @license      no
// @match        https://www.pathofexile.com/trade*
// ==/UserScript==




var input=document.createElement("input");
input.type="button";
input.value="Copy next";
input.onclick = CopyWhisper;
input.setAttribute("style", "font-size:18px;position:absolute;top:120px;right:40px;");
document.body.appendChild(input);


function CopyWhisper()
{
    var allbuttons = document.getElementsByClassName("whisper-btn");
    var firstbutton = allbuttons[0];
    firstbutton.dispatchEvent(new MouseEvent('click'));
    firstbutton.remove();

}

setInterval(CopyWhisper, 5000);

看起来您正试图通过查找具有类名“whisper btn”的按钮来删除该按钮,而button元素没有分配该类,因此没有为“allbuttons”变量分配任何内容。 您可以将该类名添加到按钮中,也可以改为尝试document.getElementsByTagName(“输入”)

看看这把小提琴:


谢谢-但是“输入”按钮是我为测试功能而添加的一个按钮-它可以工作。当我点击我的按钮时,greasemonkey找到第一个耳语按钮,点击它,然后删除它。我点击的按钮可以在whisper btn类中正确找到。只是当我从setInterval而不是我的Button@srishti-ganjoo如果你在浏览器中转到,你会看到按钮。他们确实有上面提到的类,似乎它是为我编写的,使用Chrome和TamperMonkey(在Chrome中运行greasemonkey脚本)。它每5秒触发一次单击,按下按钮,并根据需要将数据复制到剪贴板。在那之后,你似乎没有对数据做任何事情。它不会在一个长字符串中将该数据附加到剪贴板,而是覆盖最后一个剪贴板数据。您需要获取/存储添加到剪贴板的数据。此外,如果您离开浏览器窗口,它将继续单击按钮,但不会复制数据。嗯,必须重试。。每次剪贴板更改时,我都会使用自动热键写入文件,因为它不会每5秒复制一次。它每5秒删除一次按钮,是的。但只有当我真的用鼠标点击窗口(而不是在按钮上)时,它才会复制到剪贴板。这是我离开浏览器窗口时的评论要点,我对糟糕的措辞表示歉意。我的建议是,看看这里关于与剪贴板交互的开发人员文档——这有一些安全性和特定于浏览器的考虑因素,这可能会导致您的代码像您描述的那样工作,按下按钮可以工作,但使用setInterval的过程寿命更长。可能没关系,看起来他们正在使用execCommand函数复制文本。
var input=document.createElement("input");
input.type="button";
input.value="Copy next";
input.onclick = CopyWhisper;
input.setAttribute("style", "font-size:18px;position:absolute;top:120px;right:40px;");
document.body.appendChild(input);


function CopyWhisper()
{
    var allbuttons = document.getElementsByTagName("input");
    var firstbutton = allbuttons[0];
    firstbutton.dispatchEvent(new MouseEvent('click'));
    firstbutton.remove();

}

setInterval(CopyWhisper, 5000);