首页 文章

如何使用Greasemonkey启用禁用按钮?

提问于
浏览
2

我的目标是这个网站:https://ib.ing.cz/transactional-cz/#login/credentials

它有一个输入表单,我可以填写使用

document.querySelector('input[name=customer-id]').value = "1234567890";

但是,禁止让我走得更远的按钮 . 无论我尝试什么,它都会保持不变,直到我开始手动填写表格 . 如何启用按钮(最好以编程方式单击它)?我尝试模拟按键或操纵按钮的“禁用”属性,但我没有成功 .

UPDATE: 所以现在我可以点击按钮,到目前为止我使用的代码在这里:https://greasyfork.org/en/scripts/375326-p%C5%99ihla%C5%A1-se-na-ing(由于某种原因,我不得不删除if / else语句,在脚本的上下文中条件不正确,即使它是在Firefox控制台)

但是,当我单击按钮(手动或通过脚本)时,有一些更多的魔法阻止它工作,收到此错误消息(意思是“网站乱序” . ):

WebovéstránkyINGBankjsoumoursálněmimprovoz . Naodstraněnízávadyinpezivněpracujeme . Zavzniklékomplikacesepředemomlouvámeděkujemezapochopení .

但是网站没有出现故障,因为当我手动输入用户名(正确的用户名或我公开使用的用户名)时,它会转到密码 . 可以做些什么呢?

1 回答

  • 2

    参考Choosing and activating the right controls on an AJAX-driven site .

    您的target site在放置在输入的祖先div上的 keyup 事件上运行其"Client number"验证(以启用该按钮等) .

    这意味着您必须在设置值后发送keyup事件,并确保事件从输入中冒泡 .

    像这样:

    var cIdInpt = document.querySelector ('input[name=customer-id]');
    if (cIdInpt) {
        var keyupEvnt   = new Event ('keyup', {bubbles: true} );  //  no key code needed in this case.
        cIdInpt.value   = "1234567890";
    
        cIdInpt.dispatchEvent (keyupEvnt);
    }
    else {
        console.error ("cIdInpt not found.");
    }
    

相关问题