La asignación de valor del elemento de entrada a través de la consola no es suficiente para completar el envío del formulario

1

Esto se encuentra entre la seguridad de la información y la codificación de JavaScript:

Los desarrolladores de un determinado sitio web deshabilitaron la opción de guardar los datos de formulario . Ni siquiera se pueden guardar los nombres de usuario, así que intenté solucionar esto con un script de Greasemonkey, a través de:

document.querySelector('#username').value = "myUsername";

Puedo completar todos los campos sin contraseña de esta manera, pero esto no será suficiente:

Después de rellenar todos los campos sin contraseña con una operación document.querySelector similar, y luego de insertar manualmente mi contraseña, hice clic en "Enviar", pero me dijeron que "todos los campos son necesarios"; Parece que las asignaciones value no son "reconocidas" por el sitio.

Problema 1:

El contenido se reconoce si, por ejemplo, elimino la última letra del value asignado, es decir, si navego con el mouse a un campo determinado (el campo de nombre de usuario en ese caso), elimine el último la carta de myUsername para que se convierta en myUsernam y luego, si vuelvo a traer la e 'y repito esta acción, entonces el envío se ejecuta correctamente.

Problema 2:

De cualquier manera, parece que siempre necesito hacer clic en cada campo de formulario con el mouse (es decir, activar un evento onclick por cada campo); hacerlo para todos los campos activa un tipo de prueba modal (una ventana emergente) con un pequeño tipo de prueba "Demuéstrenos que usted no es un robot".

document.querySelector('#username').click(); no parece desencadenar una respuesta adecuada (aparece "indefinido" en la consola); No ocurre nada en comparación con un clic del mouse en el campo.

Intenté enviar un evento change() por cada campo pero no cambia la situación.

Mi pregunta

¿Cómo superar los 2 problemas de los valores no reconocidos y la necesidad de hacer clic en cada campo y cómo puedo solucionarlo con JavaScript de vainilla?

    
pregunta user9303970 18.06.2018 - 09:42
fuente

1 respuesta

3
  

Intenté enviar un evento change () por cada campo, pero no cambia la situación.

Creo que el problema es que el JavaScript en la página espera algún evento. Si ingresa texto normalmente, activará keydown , input y otros eventos. Cualquiera de estos eventos puede copiar el valor del campo de texto a alguna variable de JavaScript. Si cambia el valor del campo de texto pero no activa el evento, el JavaScript no notará el cambio.

Inspeccione el campo de entrada con las herramientas del depurador en el navegador y enumere los eventos adjuntos . Eso te dará una pista de qué evento usar. Entonces, desencadena ese evento como este:

element.dispatchEvent(new Event("input"));
    
respondido por el Sjoerd 18.06.2018 - 10:14
fuente

Lea otras preguntas en las etiquetas