如何使用 Greasemonkey 启用禁用的按钮?
How can I enable a disabled button with Greasemonkey?
我定位到这个网站: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 控制台中,脚本上下文中的条件也不成立)
但是,当我单击按钮(手动或通过脚本)时,有一些更神奇的东西阻止了它的工作,收到一条错误消息说 "the website is out of order"。
原来还需要添加"change"事件。答案中的原始 link 引出了一个引用 Firebug 的古老问题,该问题已被合并到 Firefox 中。对我来说关键是使用调试器。只需在网站上右击并选择 "inspect this element"。在检查器中单击这些小三角形后,可以找到与这些元素关联的事件:
为了阅读网站代码,最好将他们发送的拼写拼写成这样的美化器:https://beautifier.io/
引用Choosing and activating the right controls on an AJAX-driven site.
您的 target site 对放置在 祖先 上的 keyup
事件运行其 "Client number" 验证(以启用该按钮等) div 的输入。
这意味着您必须在设置值后发送一个 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.");
}
我定位到这个网站: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 控制台中,脚本上下文中的条件也不成立)
但是,当我单击按钮(手动或通过脚本)时,有一些更神奇的东西阻止了它的工作,收到一条错误消息说 "the website is out of order"。
原来还需要添加"change"事件。答案中的原始 link 引出了一个引用 Firebug 的古老问题,该问题已被合并到 Firefox 中。对我来说关键是使用调试器。只需在网站上右击并选择 "inspect this element"。在检查器中单击这些小三角形后,可以找到与这些元素关联的事件:
为了阅读网站代码,最好将他们发送的拼写拼写成这样的美化器:https://beautifier.io/
引用Choosing and activating the right controls on an AJAX-driven site.
您的 target site 对放置在 祖先 上的 keyup
事件运行其 "Client number" 验证(以启用该按钮等) div 的输入。
这意味着您必须在设置值后发送一个 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.");
}