我正在尝试找出一种方法,通过在 Tampermonkey 中用 Javascript 编写的用户脚本,在特定页面加载时简单地单击特定按钮(它是一个 href)。这看起来很简单,但经过多次迭代后,我的任何代码都无法正常工作。
这是我想要按下的 href 和按钮的完整源代码:
<span data-react-class="require('reactComponents/workPipeline/SubmitAcceptTaskForm')['SubmitAcceptTaskFormLink']" data-react-props="{"text":"accept","refTag":"w_wp_acpt_warning"}"><span data-reactid=".4"><a href="#" data-reactid=".4.0">accept</a></span></span>
这是我一直在尝试使用的代码(我已经分别测试了每一行,但无济于事):
// ==UserScript==
// @name Accept Button WIP
// @include https://worker.mturk.com/projects/*
// ==/UserScript==
location.href = document.querySelector("a[href='#']");
document.querySelector("a[data-reactid='.4.0']").click();
document.getElementsByClassName(".4.0")[0].click();
location.href = document.querySelector("a[href='#']");
location.data-reactid = document.querySelector("a[data-reactid='.4.0']").click();
document.querySelector("span[data-reactid='.4']").click();
这是所有内容的屏幕截图,包括按钮所在的 DIV(鼠标悬停在必要的“接受”按钮上):
我不太确定自己做错了什么。我认为我尝试过的其中一行代码会起作用,但在语法方面我可能忽略了一些东西。任何和所有帮助将不胜感激。祝你度过美好的一天和一晚。
最佳答案
很难说出为什么它不适合你......对我来说,它在本地主机上进行以下 HTML 测试时没有问题:
<html>
<head>
<script type='text/javascript'>
function check(){
console.log('Hellow world');
}
</script>
</head>
<body>
<span data-react-class="require('reactComponents/workPipeline/SubmitAcceptTaskForm')['SubmitAcceptTaskFormLink']" data-react-props="{"text":"accept","refTag":"w_wp_acpt_warning"}"><span data-reactid=".4"><a href="#" data-reactid=".4.0" onclick='check()'>accept</a></span></span>
</body>
</html>
以及以下用户脚本:
// ==UserScript==
// @name Autoclick
// @namespace http://tampermonkey.net/
// @version 0.1
// @match http://localhost/test.html
// @grant none
// @run-at document-end
// ==/UserScript==
(function() {
'use strict';
document.querySelector("a[data-reactid='.4.0']").click();
})();
对我来说,它在没有自动执行功能的情况下工作,我只是添加了 @run-at
directive很好的衡量标准,但没有它也能工作。
“Hello World” 消息在页面加载后出现在控制台上。
一个提示是,大多数时候,您要在用户脚本上运行的代码应该与从控制台运行的代码完全相同。通过这种方式,您可以实时测试哪些有效或无效。
关于javascript - 在页面加载时自动按下特定按钮的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51270974/