我想使用用户脚本在页面加载后自动单击按钮。
目标页面的HTML(我无法控制)如下所示:

<a id="signInBtn" alog-alias="qb-signin-btn" class="signInBefore btn btn-24-white grid" data-disabled="false" hidefocus="hidefocus">
    <em><b>CheckIn</b></em>
</a>

这是一个没有href属性的奇怪链接。我正在尝试使用以下代码:
var btn = $("a#signInBtn");
btn.trigger("click");

但是Chrome的控制台为我提供了以下功能:



我的用户脚本如何单击此按钮?

最佳答案

jQuery .trigger()主要仅适用于jQuery设置的事件。并且,在这种情况下,必须使用目标页面的jQuery实例而不是用户脚本的实例来调用它。 (此外,您的脚本如何使用jQuery?错误的方法可能破坏页面,脚本或同时破坏两者。)

可能还需要其他事件和/或AJAX来应对,我们无法从您的问题中得知。参见Choosing and activating the right controls on an AJAX-driven site

几乎在所有情况下,都可以对节点进行轮询并触发鼠标事件。这是一个完整的用户脚本,可帮助您入门:

// ==UserScript==
// @name     _Auto-click the sign-in link
// @include  http://YOUR_SERVER.COM/YOUR_PATH/*
// @grant    GM_addStyle
// ==/UserScript==

var signInTimer = setInterval ( function() {
        var signInBtn = document.querySelector ("#signInBtn");
        if (signInBtn) {
            clearInterval (signInTimer);

            var clickEvent  = document.createEvent ('MouseEvents');
            clickEvent.initEvent ('click', true, true);
            signInBtn.dispatchEvent (clickEvent);
        }
    }
    , 200
);

09-17 14:51
查看更多