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

时间:2018-12-08 23:36:03

标签: javascript greasemonkey tampermonkey

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

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

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

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

更新:我终于可以使用它了,我正在使用的代码在这里:https://greasyfork.org/en/scripts/375326-p%C5%99ihla%C5%A1-se-na-ing (由于某种原因,我不得不从答案中删除if / else语句,即使脚本在Firefox控制台中,该条件在脚本上下文中也不成立)

但是,当我单击按钮(手动或通过脚本)时,出现了一些更多的魔术使该功能无法正常工作,并显示一条错误消息,指出“网站故障”。

原来,还需要添加一个“更改”事件。答案中的原始链接会引出一个古老的问题,引用了Firebug,此问题已合并到Firefox中。对我来说,关键是使用调试器。只需在网站上单击鼠标右键,然后选择“检查此元素”。在检查器中单击以下小三角形后,可以找到与这些元素关联的事件:enter image description here

要阅读网站代码,最好将它们发送的抄写本放入美化器中,例如:https://beautifier.io/

1 个答案:

答案 0 :(得分:2)

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

您的target site在输入的祖先 div上的keyup事件上运行其“客户编号”验证(以启用该按钮等)。< / p>

这意味着您必须在设置该值后发送一个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.");
}