我的目标网站是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中。对我来说,关键是使用调试器。只需在网站上单击鼠标右键,然后选择“检查此元素”。在检查器中单击以下小三角形后,可以找到与这些元素关联的事件:
要阅读网站代码,最好将它们发送的抄写本放入美化器中,例如:https://beautifier.io/
答案 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.");
}