有一个页面,其锚标签在延迟后可以单击。我想使用一个用户脚本来单击它。
页面加载时,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)上进行尝试时,没有任何反应。我该怎么办?
答案 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