设置了href设置的href后,如何在延迟后单击它?

时间:2018-09-04 04:19:33

标签: javascript tampermonkey

有一个页面,其锚标签在延迟后可以单击。我想使用一个用户脚本来单击它。

页面加载时,HTML源为:

<div id="buton" style="display:none">
  <div class="info-link right">
    <a href="#">Download</a>
  </div>
</div>

延迟后,#button变为可见,HTML变为:

<div id="buton" style="">
  <div class="info-link right">
    <a href="http://178.32.87.115/jetapi/mali.php?go=aHR0cHM6Ly9vdXJsLmlvLzZpN0Mw" data-ss1536034362="1">Download</a>
  </div>
</div>

我尝试使用此代码单击它in JSFiddle,并成功运行:

document.querySelector('.info-link.right a').click()

但是,当我在实际的website here(使用tampermonkey)上进行尝试时,没有任何反应。我该怎么办?

1 个答案:

答案 0 :(得分:1)

您需要等到元素的href重新分配后才能单击它。幸运的是,您所讨论的站点是静态的,并且<a>位于页面加载的HTML中,因此可以立即选择它-然后,您可以使用MutationObserver对其进行观察,以便一旦{{1} }被更改,您可以href对其进行修改。

click()

请注意,如果网站不是静态的,并且在页面加载时// ==UserScript== // @name clickit // @namespace CertainPerformance // @version 1 // @match http://178.32.87.115/jetapi/?file=28941536032773 // @grant none // ==/UserScript== const a = document.querySelector('.info-link > a'); const observer = new MutationObserver(() => { a.click(); }); observer.observe(a, { attributes: true }); 不存在,则您必须做其他事情,也许使用<a>并连续检查页面中是否有setInterval与您想要的匹配的a

href