【问题标题】:How to simulate a mouse click on an <a> tag that has no href?如何模拟鼠标点击没有href的<a>标签?
【发布时间】:2013-11-23 05:36:18
【问题描述】:

我想使用用户脚本在页面加载时自动单击按钮。
目标页面的 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?]

我的用户脚本如何点击这个按钮?

【问题讨论】:

  • a 标签缺少属性 href 。您不能调用 .trigger("click"); 因为您还没有为 a 标签定义点击处理程序。
  • 你能在链接上附加一个无用的href,比如javascript:void(0)吗?此外,"a#signInBtn" 是多余的,因为 ID 必须是唯一的;只需改用"#signInBtn"
  • @TusharGupta 我不确定。我不熟悉javascript和html。我不知道为什么这个标签缺少href。
  • @mc10 抱歉。我在这个标签中找不到href...我很困惑。
  • @einverne 你的a 标签必须有href 例如&lt;a href="#"&gt;&lt;/a&gt;&lt;a href="abc.html"&gt;&lt;/a&gt;

标签: javascript jquery hyperlink userscripts


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2019-05-15
    • 1970-01-01
    • 2014-08-24
    • 2022-11-18
    • 1970-01-01
    • 2012-01-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多