如何绕过javascript文本框上的按键要求?

如何绕过javascript文本框上的按键要求?,javascript,jquery,Javascript,Jquery,您好,谢谢您的阅读 所以我尝试使用Chrome自动登录到这个表单 我使用自己的Chrome扩展来实现这一点。它基本上只是一个自动填充字段的javascript文件。我在很多网站上使用它 例如,这是我填写文本框的函数: function fld(param, val){try{document.querySelectorAll(param)[0].value = val} catch(e){}} 我这样称呼它: fld("input[id='loginForm-email']", "mail@

您好,谢谢您的阅读

所以我尝试使用Chrome自动登录到这个表单

我使用自己的Chrome扩展来实现这一点。它基本上只是一个自动填充字段的javascript文件。我在很多网站上使用它

例如,这是我填写文本框的函数:

function fld(param, val){try{document.querySelectorAll(param)[0].value = val} catch(e){}}
我这样称呼它:

fld("input[id='loginForm-email']", "mail@myemail.com")
对于大多数网站来说,它是有效的。但是对于上面的患者访问网站,它没有,我认为原因是密码文本框需要物理按键(或者监听更改事件或其他)

当我运行脚本时,它会很好地填充文本框,但不会让我单击“下一步”,因为即使文本框看起来已填充,网页也知道我实际上没有按任何键

为了解决这个问题,我必须让我的脚本填写表单,然后单击密码框,按空格,删除我刚刚输入的空格,然后它让我登录,因为它知道我已经实际按下了密码框中的一个键

所以我的问题是,如何让我的自动登录javascript在这个网站上工作

我不认为脚本可以使用按键事件来输入文本框,但这没关系,因为我可以通过编程(使用上面的fld函数)来填充文本框。但是我怎样才能让页面相信我已经在密码文本框中输入了密码,这样它就可以让我提交表单了

正如我所说,我正在使用JavaScript,如果需要,我可以包括jQuery


谢谢。

经过多次尝试和错误,我能够用JavaScript解决这个问题,方法如下:

var fireOnThis = document.querySelectorAll("[type='text']")[0]
const changeEvent = new Event('input', { bubbles: true, cancelable: true });
fireOnThis.dispatchEvent(changeEvent);
它工作得非常漂亮。我把它变成了一个函数,我所做的就是在自动填充文本字段之后运行这个函数(在填充字段之前它不起作用,必须在之后)

我在其他网站上尝试了许多其他的解决方案,但没有一个有效,只有这一个有效。哇

我从一个叫做Chrome的扩展中得到了这个概念。我在我试图自动化的表单上尝试了扩展,令我惊讶的是,它毫无疑问地填充了表单。所以我看了一下,想知道它是怎么做到的,我发现:

['input', 'click', 'change', 'blur'].forEach(event => {
  const changeEvent = new Event(event, { bubbles: true, cancelable: true });
  element.dispatchEvent(changeEvent);
});

所以我只是把它转换成我答案中的代码,它起了很大的作用。因此,应该归功于表单填充程序的开发人员Hussein Shabbir。

您可以在JavaScript的文本框上触发一个
keypress
事件<代码>$(“输入[id='loginForm-email']”)。触发器(“按键”)您可能需要使用devtools的event listeners子选项卡找到要模拟的特定事件。也许这是一个
输入
事件。另一个选项是手动创建一个按键事件并将其发送到文本框,该文本框应级联到现有脚本中,并启动验证例程以解锁按钮。搜索“simulate enter key js”(即使您不想输入,但它是较新的代码),如果您只选择第一个,为什么要使用
queryselectoral(param)[0]
?使用
querySelector
@Barmar我试过:$(“[type='password']”)。触发器(“按键”);-我必须按类型识别文本框,因为它没有ID或名称。通过类型识别可以很好地填充密码框并关注密码框,但它仍然表示我需要输入密码。您需要找到执行检查的JavaScript,并明确确定它要查找的事件。它可能不是
按键
,可能是
单击
更改
编辑
,等等。