获取有关jquery创建的vouchsafe元素的信息

时间:2013-11-08 11:33:41

标签: jquery html captcha

我正在考虑使用vouchsafe小部件作为我的某个网站表单上的reCAPTCHA的替代。

小部件将元素注入DOM,包括

<a id="vouchsafe-button" class="" href="javascript:void(0)"> ...
<span id="vouchsafe-button-text-top">Click to Validate</span>

当用户执行所需操作(在生成的图形元素上绘制一条线)时,上面的两行将更改为:

<a id="vouchsafe-button" class="vouchsafe-path-data-saved" href="javascript:void(0)"> ...
<span id="vouchsafe-button-text-top">Path Data Saved</span>

Vouchsafe本身有一些关于小部件的PHP使用的文档,但没有关于处理客户端挑战和响应的javascript。

我想在此阶段做的就是记录#vouchsafe-button课程的变化以及#vouchsafe-button-text-top的文字变化。我尝试将$("#vouchsafe-button").attr("class")$("#vouchsafe-button-text-top").text()写入控制台日志,但该类报告为undefined,文本报告为空字符串

1 个答案:

答案 0 :(得分:0)

这个答案解决了问题的标题(和@ RoryMcCrossan的回答,这是为了猜测我的初衷是在元素发生变化时引发事件),尽管它本身并没有完全回答这个问题。

vouchsafe插件小部件将大量元素注入到DOM中(包括我的问题中描述的按钮链接),其中一些元素在用户执行所需操作时更改内容。

由于jQuery .change事件不可用于非输入元素和隐藏的输入元素 - 并且缺少稳定的跨浏览器观察者的突变事件 - 唯一真正可行的跨浏览器解决方案是使用setInterval,寻找适当元素的变化(我选择了#vouchsafe-chellenge-response,这似乎比我原来的选择更合适。)

我的最终解决方案(使用.load方法处理任何所需的验证)是:

watchforchallenge=setInterval(function(){
    resp = $("#vouchsafe-challenge-response");
    if (resp.val()) {
        $("#unbanresponse").load("/forbidden/functions/unban.php",removecaptcha());
        clearInterval(watchforchallenge);
    }
}, 500);

function removecaptcha(){
    $("a#vouchsafe-button").slideUp();
}