【问题标题】:Greasemonkey: how to click a certain buttonGreasemonkey:如何点击某个按钮
【发布时间】:2012-11-24 09:21:48
【问题描述】:

我是 JavaScript 新手:与 Java 非常不同,哈哈:P 我想知道如果我有一个按钮,我怎么能以 4-5 分钟的间隔连续按下那个按钮? 以下是页面来源:

<head><title>A>
<link rel="stylesheet" href="i/w/i_style0n.css">
</head>
<body bgcolor=black topmargin=0 leftmargin=0 rightmargin=0 bottommargin=0>
<img src=i/w/sp_.gif height=2><br><table align=center cellspacing=0 cellpadding=2 width=800 style="border:solid 1px yellow;color:white;" bgcolor=#383838><tr><td align=center> &nbsp; <a href=/p/en/forum/read/100/29291/ target=blank>Raffle 12/11/12-25/11/12 </a> {<a href=hef.cfm?&3831&f=hef_detail&hi=29291&ch=100 target=_Blank>UC0</a>} ( <a href=/p/en/forum/read/100/28080/ target=_blank>Details</a> {<a href=hef.cfm?&3831&f=hef_detail&hi=28080&ch=100 target=_Blank>UC0</a>} . <a href=/p/en/forum/read/100/28201/ target=_blank>Winners</a> {<a href=hef.cfm?&3831&f=hef_detail&hi=28201&ch=100 target=_Blank>UC0</a>} ) - <a href=/p/en/forum/read/200/118678/ target=_Blank>Minor updates</a> {<a href=hef.cfm?&8950&f=he_detail&hi=118678&ch=200 target=_Blank>UC0</a>} - <a href=/p/en/forum/read/100/29293/ target=_Blank>Xmas Event </a> {<a href=hef.cfm?&3831&f=hef_detail&hi=29293&ch=100 target=_Blank>UC0</a>} &nbsp; </td></tr></table><img src=i/w/sp_.gif height=5><br><script>idir='i/w/';fdir='i/w/'; loadtop='sc;0;i.cfm;1;12;-999999999999;1149205838665;19979962050;0;Eli';</script><script src="i/w/j_fr_low.js"></script> <script>lowresbar('0;class=res;; class=res><a href=i.cfm?r' + Math.round(Math.random() * 1000000) + '&f=sc_event>;0;');</script><font class=ft>Research > Housing</font><br>&nbsp;<Br><table width=250 class=trane><tr class=tranbox2><td align=center><table border=0><tr><td class=cw>2,304 turns left in research !</td></tr></table></td></tr></table>&nbsp;<br><table cellspacing=0 cellpadding=2 border=0 align=center class=tranbox><tr class=tranbox2><td class=fs> &nbsp; 31 turn(s) used &nbsp; &nbsp; &nbsp;
Credit -188,302,058,116 &nbsp; Food +17,678,556 &nbsp; &nbsp; <font class=cr>Debt - 18,137,549,878</font>
<br><font class=fsr> &nbsp; Bankruptcy warning: Most production has stopped due to debt<br> &nbsp; Reduce your debt as soon as possible !</font></td></tr></table><img src=i/w/sp_.gif height=5><br>&nbsp;<br>
<script src="i/w/j_sc_research2.js"></script>
<script>
function x5n6z3(obj) { if(obj.value == "Start") obj.form.submit(); obj.value = "Wait!"; } function confirmflag() { if (confirm("")) document.location=frf+'?'+ranurl+'f=sc_research2&rtype='+rtype+'&del=1'; else return false; } 

res2('0;1;&kq7e&;Housing;157;2304;0;Start;Wait!;x5n6z3;y61lip;');
</script>
    <br>&nbsp;</td></tr></table></td><td class=fs> <script>ochat('');</script><font color=#747474>08:27 AM &nbsp; 24 Nov 2012<br>46 Player(s) Online<br>  0.05x Load (sec)</td></td></tr></table> <br><br></body></html>

我想每 4-5 分钟点击一次“开始”按钮。谁能帮我解决这个问题?

【问题讨论】:

  • 看看我对类似问题here 的回答,并将其与window.setInterval 结合起来。
  • 呃,那个代码中没有“开始”按钮!看起来它可能是由 javascript 添加的,但在不知道实际网站的情况下,我们无法确定。使用页面上可见的按钮,使用 Firefox 将页面保存到磁盘 (Ctrl S),然后将 .htm 文件复制到 pastebin.com 并链接到此处。最好也链接到目标页面。
  • stackoverflow.com/q/6466856stackoverflow.com/q/12252701stackoverflow.com/q/6337197 和许多其他的副本。 ... ... 在当前形式中过于本地化。

标签: javascript greasemonkey


【解决方案1】:

要在 JavaScript 中模拟点击,您可以像我在 this 回答中所说的那样编写代码。

function simulateClick(node) {
    var ev = document.createEvent("MouseEvents");
    ev.initMouseEvent("click", true, false, self, 0, 0, 0, 0, 0, false, false, false, false, 0, null);
    return node.dispatchEvent(ev);
}

并将其与window.setInterval结合起来

var nodeToClick = null, // some node
    clicker = function clicker() {
        simulateClick(nodeToClick);
    };
window.setInterval(clicker, 4*60*1000); // 1000ms in sec * 60secs in min * 4 mins

【讨论】:

  • 这是“如何点击”,而不是如何点击 OP 的按钮。
  • @BrockAdams 我假设 OP 知道如何获取节点并设置 nodeToClick,但我做不到,因为 OP 的代码没有任何 &lt;button&gt;&lt;input&gt; 所以我假设它由此处未粘贴的代码生成。 (实际点击它是“硬位”)
  • 不是一个有效的假设,我敢打赌。我们会看到,如果 OP 回应。 ... 实际的点击并不是最难的部分。它已经在许多问题中得到了回答——你的答案中的方法已经一遍又一遍地显示出来(除了这个答案在大多数 AJAX 场景中会崩溃)。
  • 由于元素更改导致 AJAX 崩溃?这就是为什么nodeToClickvar 在函数clicker 之外的原因,所以你可以改变它,clickers 的目标也会改变。如果你真的担心这个,你可以先得到每次/检查存在。
  • 崩溃,因为nodeToClick 不会出现在第一次运行(或多次运行)中。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-05-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-18
  • 1970-01-01
相关资源
最近更新 更多