单击动态修改的按钮?

时间:2016-09-25 15:42:44

标签: javascript jquery click tampermonkey

目标网页包含以下内容:

jQuery(function () {
    var delay = 1000; //1 sn
    var id = "0b9cfb9f62ef7a2";
    jQuery.ajax({
        "method":"get",
        "url":"?ajax="+id,
        "success": function (json) {
            //alert(json);
            json = JSON.parse(json);
            setTimeout(function(){
                if(json.data != ""){
                    jQuery("#button").attr("class","btn btn-block btn-danger");
                    jQuery("#button").text(json.data);
                }else{
                    jQuery("#button").click(function(){location.href=json.url});
                    jQuery("#button").attr("class","btn btn-block btn-success");
                    jQuery("#button").text("Download!");
                }
            },delay);
        },
        "error":function(){
            alert("XXX");
        }
    });
});

我想要做的是在几秒钟后点击 下载! 按钮。

我尝试使用此代码:

waitForKeyElements ("#button:contains('Download')", clickSubmitBtnWhenItAppears);

function clickSubmitBtnWhenItAppears (jNode) {
    var clickEvent = document.createEvent ('MouseEvents');
    clickEvent.initEvent ('click', true, true);
    jNode[0].dispatchEvent (clickEvent);
}

但它不起作用!我认为问题出在#button,但我无法理解。对不起我对JS的了解不足。

1 个答案:

答案 0 :(得分:2)

您的代码正在等待#button的存在。它需要做的是等待两个以存在#button 按钮以使文本“下载”。

在这种情况下,您应该只需通过调整jQuery选择器就可以做到这一点:

waitForKeyElements ("#button:contains('Download')", clickSubmitBtnWhenItAppears);

对于更复杂的情况,您可能需要use more fine tuning with waitForKeyElements()