Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是什么让web应用程序无法识别JavaScript输入的值?_Javascript_Forms - Fatal编程技术网

是什么让web应用程序无法识别JavaScript输入的值?

是什么让web应用程序无法识别JavaScript输入的值?,javascript,forms,Javascript,Forms,通常,在不同的网站上,当我使用JavaScript向字段输入文本时(为了自动填写表单): 我遇到以下问题 我的问题 上述通过JavaScript的文本输入,无论是通过devtool控制台手动输入,还是通过userscript管理器手动输入,都是无效的,因此无法提交表单,我被要求“在所有字段中填写数据” 一种处理方法是删除输入文本的最后一个(或第一个)字符,然后自己手动重新输入该字符,然后识别文本,但这不是真正的解决方案 失败的解决方案 我尝试用以下模式处理上述问题,但失败了: 1)在所有字段上手

通常,在不同的网站上,当我使用JavaScript向字段输入文本时(为了自动填写表单):

我遇到以下问题

我的问题 上述通过JavaScript的文本输入,无论是通过
devtool控制台
手动输入,还是通过
userscript管理器
手动输入,都是无效的,因此无法提交表单,我被要求“在所有字段中填写数据”

一种处理方法是删除输入文本的最后一个(或第一个)字符,然后自己手动重新输入该字符,然后识别文本,但这不是真正的解决方案

失败的解决方案 我尝试用以下模式处理上述问题,但失败了:

1)在所有字段上手动鼠标单击,然后在devtool控制台中执行:

dispatchEvent(new Event("keydown"));
dispatchEvent(new Event("keyup"));
dispatchEvent(new Event("change"));
真的

2)再次手动鼠标单击所有字段

我的问题 什么会使web应用程序无法识别JavaScript输入的值?

除非手动更改数据的至少一个字符,否则什么可以阻止识别数据?

页面可能无法识别编程输入值的一些可能性如下:

它可能正在侦听与您触发的事件不同的事件。有许多类型的事件与输入文本有关,包括
按键
输入
,以及
焦点
。手动单击输入并按键时,查看以下代码段中记录的内容:

让obj=输入;
while(obj){
for(Object.getOwnPropertyNames(obj)的常量属性){
如果(!prop.startsWith('on'))继续;
input.addEventListener(prop.slice(2),()=>console.log(prop.slice(2));
}
obj=Object.getPrototypeOf(obj);
}

当您从JavaScript更改输入值时,事件不会触发,只有在用户更改输入值时才会触发。这意味着在默认情况下会触发某些事件,而当您尝试以编程方式插入数据时,这些事件不会发生。您可以尝试其他事件:
keypress
input
,等等。希望站点的JS在继续之前不会检查事件是否可信,否则您将退出luck@CertainPerformance你确定我会因为这件事而走运吗?几位在JS方面比我经验丰富得多的程序员经常对我说“在JS中,如果你足够成熟,你没有什么不能模仿用户的”。你可能想根据你和Barmar写的东西写一个答案,我回答你。是的,你是对的。几乎总是有解决办法的,但是如果站点的脚本很大而且很小,那么要想弄清楚它在做什么以及如何绕过它可能需要花费太多的精力。
dispatchEvent(new Event("keydown"));
dispatchEvent(new Event("keyup"));
dispatchEvent(new Event("change"));