如何模拟鼠标点击<a>没有href的标记

How to simulate a mouse click on an <a> tag that has no href?

本文关键字:没有 gt href 何模拟 lt 模拟 鼠标      更新时间:2023-09-26

我想使用用户脚本在加载页面时自动单击按钮
目标页面的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的控制台给了我这个:

的事件处理程序出错(未知):
错误:语法错误,无法识别的表达式:a[href^=/i?]

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

jQuery .trigger()主要只适用于jQuery设置的事件。而且,在这种情况下,必须使用目标页面的jQuery实例来调用它,而不是使用用户脚本的实例。(还有,你的脚本是如何使用jQuery的?错误的方法可能会破坏页面、脚本,或者两者兼而有之。)

可能还需要处理其他事件和/或AJAX,我们无法从您的问题中判断出来。请参阅在AJAX驱动的网站上选择和激活正确的控件。

轮询节点和触发鼠标事件几乎在所有情况下都可以工作。这里有一个完整的用户脚本可以让你开始:

// ==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
);