Creé un marcador en mi navegador Chrome con el siguiente código javascript. Así que no necesito escribir nombre de usuario/contraseña para las páginas web de inicio de sesión.
javascript:(()=>{ let f=(s,v)=>document.querySelector(`[id$="${s}"],[name$="${s}"],[type$="${s}"]`).value=v; f('password','....'); f('username','...') })()Funciona en la mayoría de nuestras páginas de inicio de sesión. Sin embargo, en una de las páginas de inicio de sesión creadas con React , los cuadros de texto de nombre de usuario y contraseña (entrada html) se completan, pero el valor no se envía al hacer clic en el botón de inicio de sesión. A menos que realice alguna edición en el cuadro de texto del nombre de usuario y la contraseña (por ejemplo, agregando un espacio y luego eliminándolo).
¿Es una forma de evitar editar manualmente los cuadros de texto? (¿Parece que el script necesita activar algunos eventos como keyup?)
Entrada HTML:
<input autocomplete="off" id="username" disabled="" class="login-input input" type="text" value="">Intenté el siguiente código y todavía se comporta igual.
javascript:(()=>{ let f=(s,v)=>{ x=document.querySelector([id$="${s}"],[name$="${s}"],[type$="${s}"]); x.value=v; x.dispatchEvent(new Event("change", {target: {value: v}})) }; f('password','....');f('username','....') })()En general, en reaccionar, hay 2 formas de obtener el valor de lo que está en la entrada y usarlo en la aplicación.
ref y solo verifican ref, que debe actualizarse automáticamente cuando cambia el valor.onChange así: const [val, setVal] = useState("") // initial value of empty string return <input value={val} onChange={(e) => setVal(e.target.value)} /> Si el código está configurado como el segundo caso, es posible que necesitemos simular un evento onChange nosotros mismos para que el estado se actualice.
Podemos intentar modificar el script así:
javascript:(()=>{ let f=(s,v)=>document.querySelector(`[id$="${s}"],[name$="${s}"],[type$="${s}"]`).dispatchEvent(new Event("change", {target: {value: v}})) f('password','....'); f('username','...') })()