Autor
|
Tema: [Pregunta]: ¿Como escribir en un input con javascript? (Leído 6,684 veces)
|
**Aincrad**
|
Como dice el titulo , parece sencillo pero no lo logro. Intento iniciar sesión en Netflix : https://www.netflix.com/loginPero al escribir en el campo, por alguna razón es como si no lo hubiera escrito. document.getElementById('id_userLoginId').value = 'UserEmail';
Incluso intente escribir en el atributo directamente, pero no funciona : document.getElementById('id_userLoginId').setAttribute('value', 'UserEmail');
Espero puedan ayudarme , Gracias de antemano.
|
|
|
En línea
|
|
|
|
MinusFour
|
El problema es que debe estar guardando los inputs en algún estado. Por ejemplo: let myInput = document.querySelector('#myInput'); { let state = ''; myInput.addEventListener('input', (e) => { state = e.currentTarget.value; }); myInput.addEventListener('focus', (e) => { e.currentTarget.value = state; }); }
Y si la página envía los valores directos desde este estado pues no tiene ni caso intentar hacer submit si no puedes escribir al estado directamente (y por lo general esto es así).
|
|
« Última modificación: 29 Agosto 2021, 20:45 pm por MinusFour »
|
En línea
|
|
|
|
**Aincrad**
|
vale, entonces no puedo hacerlo ? otra pregunta, sabes como funcionan los navegadores para llenar el campo user/password guardados en el navegador? , osea google chrome me auto completa el user en netflix perfectamente, pero no se como trabaja.... de todos modos, gracias.
|
|
|
En línea
|
|
|
|
MinusFour
|
vale, entonces no puedo hacerlo ? otra pregunta, sabes como funcionan los navegadores para llenar el campo user/password guardados en el navegador? , osea google chrome me auto completa el user en netflix perfectamente, pero no se como trabaja.... de todos modos, gracias. Pues, en teoría debes poder simular un evento que provoque el cambio. Sin embargo, estuve probando bastante formas de enviar esos eventos y simplemente no pude reproducir el evento. Del auto fill de google chrome no se como trabaja tampoco. Edit: Vaya pues, es algo de React... Se está ahorrando eventos de una manera que todavía no comprendo muy bien. Aquí una función correcta ( sacada de SO). const triggerInputChange = (node, inputValue) => { const descriptor = Object.getOwnPropertyDescriptor(node, 'value'); node.value = `${inputValue}#`; if (descriptor && descriptor.configurable) { delete node.value; } node.value = inputValue; const e = document.createEvent('HTMLEvents'); e.initEvent('change', true, false); node.dispatchEvent(e); if (descriptor) { Object.defineProperty(node, 'value', descriptor); } }
Los inputs que crea react tienen setters y getters en value especiales para evitar que se creen varios eventos cuando el input no ha cambiado. Por eso agrega el nuevo texto con un # primero para simular que haya un cambio de texto.
|
|
« Última modificación: 30 Agosto 2021, 00:07 am por MinusFour »
|
En línea
|
|
|
|
WHK
|
Probablemente no te funcione porque no estás llegando al objeto, primero asegúrate de que document.getElementById('id_userLoginId') resuelva el objeto y que sea un input válido, prueba un console.log(). Por ejemplo, puede ser que tu escript se esté ejecutando antes del renderizado y por ende no esté llegando al input porque el input aun no está escrito, también puede ser que el campo no sea un input sino una división que por debajo rellena un input invisible. Primero verifica que estés llegando al objeto. ¿Estás usando greasymonkey?, si es así debes llamar al document onload como evento para que se ejecute después del renderizado.
Saludos.
|
|
|
En línea
|
|
|
|
**Aincrad**
|
Hola, gracias por las respuestas. Al final así lo resolví: Activamos el Foco en el Input : document.getElementById('id_userLoginId').focus();
Convierto el String, en este caso el correo : Example@gmail.com en un array Char lo recorro y lo envio como pulsacion de tecla usando el motor Web, en este caso uno basado en Chromium (EO.WebBrowser) . Dim TextArray() As Char = UserString.ToCharArray For Each element As Char In TextArray WebView1.SendChar(element) Next
Hago lo mismo con el campo Password. y posterior mente hago click el el boton de login. y listo, Funciona!. Asi me logeo en Netflix.
|
|
|
En línea
|
|
|
|
WHK
|
Si quieres hacer login desde una app externa que no sea el navegador web talves podrías pensar en utilizar algo que ya esté diseñado para eso como por ejemplo https://www.selenium.dev/Recuerda que si tu desarrollo estará hecho en visual basic significará que no será multiplataforma porque solo funcionará en windows y dejarás fuera a todos los que usan mac o linux. Saludos.
|
|
|
En línea
|
|
|
|
[u]nsigned
Desconectado
Mensajes: 2.397
JS/Node developer
|
Que estás intentando hacer?? Como te comentan, el formulario ese esta hecho con React y meneja un estado, acabo de comprobarlo, cuando modificas el campo #id_userLoginId no se modifica el state. Lo que si podes hacer es usar Puppeteer. Yo asi logre crear un bot para Whatsapp usando su version web. El libreria te permite lanzar una instancia de Chomium/Chrome y poder simular las pulsaciones de teclas como lo haría un humano, porque ya no estarías haciendo magias con JS, sino que le decís al propio browser que envié esas señales (pulsación de tecla, click, etc) a la web. Dicha herramienta en realidad fue creada para automatizar pruebas web E2E, pero uno también puede darle estos usos malignos (?
|
|
« Última modificación: 10 Septiembre 2021, 23:33 pm por [u]nsigned »
|
En línea
|
No hay atajo ante la duda, el misterio se hace aquí... Se hace carne en cada uno, el misterio es existir!
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
duda con input box y javascript
Desarrollo Web
|
^kazike^
|
0
|
3,005
|
22 Julio 2010, 16:20 pm
por ^kazike^
|
|
|
[Pregunta]: ¿Como puedo vaciar un input type FILE?
Desarrollo Web
|
Leguim
|
2
|
2,900
|
17 Febrero 2019, 14:57 pm
por Leguim
|
|
|
[Pregunta]: INPUT CON javascript (DINERO)
Desarrollo Web
|
Leguim
|
3
|
2,353
|
28 Abril 2019, 06:16 am
por Leguim
|
|
|
[Resuelto] [Pregunta]: Input sólo letras con javascript
Desarrollo Web
|
Leguim
|
3
|
3,140
|
27 Septiembre 2019, 16:08 pm
por MinusFour
|
|
|
[Resuelto] [Pregunta]: Primer letra de un input en mayuscula (javascript)
Desarrollo Web
|
Leguim
|
4
|
2,824
|
27 Septiembre 2019, 22:23 pm
por Leguim
|
|