【问题标题】:Captcha/JQuery - Click simulation only works onceCaptcha/JQuery - 点击模拟只工作一次
【发布时间】:2018-07-26 03:20:48
【问题描述】:

你好,堆栈溢出者。我正在使用 JQuery 来模拟单击与 reCaptcha 链接的不可见按钮。 reCaptcha 需要附加多个按钮,并且每个页面中只能有一个 reCaptcha。因此,我创建了一个回调函数来检测按下了哪个按钮。我是这样做的:

HTML:

<div class="invisible">
    <button class="g-recaptcha"
    data-sitekey="..."
    data-callback="captcha_callback"
    data-badge="inline"
    data-type="image"
    id="btn_captcha"></button>
</div>

点击事件+点击模拟:

$("#review_send").on("click", function() {
    alert("HI");
    $("#btn_captcha").data("button-pressed", "review");
    $("#btn_captcha").click();
    $("#btn_captcha").blur();
});

reCaptcha 回调:

var captcha_callback = function(response) {
  if($("#btn_captcha").data("button-pressed") === "mail") {
    alert($("#btn_captcha").data("button-pressed"));
    send_contact_mail(response);
  } else if($("#btn_captcha").data("button-pressed") === "review") {
    alert($("#btn_captcha").data("button-pressed"));
    send_review(response);
  }
};

会发生什么;当我第一次点击#review_send 时,一切正常:它首先提示“HI”,然后是“review”。但是当我第二次点击#review_send 时,我只会收到带有“HI”的提示。

我发现等待一段时间后点击再次起作用。

这是否与 JQuery/Javascript 相关,是否与 reCaptcha 或 reCaptcha 有超时有关?

提前致谢!

【问题讨论】:

    标签: javascript jquery recaptcha captcha


    【解决方案1】:

    所以,我做了这个解决方法,因为我认为你不能在同一页面上有多个 recaptcha。但是,我发现有一种方法可以拥有多个。

    您可以渲染 reCaptcha 并重置它们(都使用 javascript):

    var widget1 = grecaptcha.render("divID", {
        siteKey: "...",
        type: 'image',
        callback: function(response) {
            send_review(response);
        }
    });
    

    重置:

    grecaptcha.reset(widget1);
    

    我只需要检查我按下了哪个按钮以在正确的 div 中呈现和/或重置正确的 reCaptcha。

    【讨论】:

    • 很好,正在研究解决方案,但无法解决!
    猜你喜欢
    • 2015-01-05
    • 2021-11-17
    • 2013-06-24
    • 1970-01-01
    • 2011-09-19
    • 1970-01-01
    • 1970-01-01
    • 2013-09-21
    • 1970-01-01
    相关资源
    最近更新 更多