无法以编程方式单击 Greasemonkey 脚本中的 <a> 标记

Cannot programmatically click <a> tag in Greasemonkey script

我正在尝试让 Firefox 中的 Greasemonkey 单击这个没有 href 属性的锚点:

<a class="btn btn-primary pull-right"
   ng-class="{'disabled': programsTabSubmitInProgress}"
   ng-click="handleAddProgramClick()">
  <i class="fa fa-plus"></i>
  <span>Add Program</span>
</a>

我已经尝试过这行代码,但是行不通:

// ==UserScript==
// @name        Final Test
// @description Final test results
// @require     http://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js
// @include     https://qs-hub.qs.com/#/profiles/topuniversities/programs*
// ==/UserScript==
setTimeout(function () {
  document.querySelector('.btn.btn-primary.pull-right').click();
}, 5000);

有没有人有点击这个锚点的正确解决方案?

代码应该可以正常工作。您确实需要确保单击 right 元素:

console.log(document.querySelector('.btn.btn-primary.pull-right'));

根据评论,您实际上想要单击第五个这样的元素。那是:

document.querySelectorAll('.btn.btn-primary.pull-right').item(4).click();

document.querySelectorAll returns a NodeList of which we click the fifth item.

顺便说一句,您没有使用 jQuery,因此不需要在您的脚本中要求它。

与其让超时,不如考虑等待页面 load:

window.addEventListener('load', function() {
    document.querySelectorAll('.btn.btn-primary.pull-right').item(4).click();
}, false);