Estoy tratando de cancelar el envío de la página de inicio de sesión web de Microsoft ( https://login.microsoftonline.com ) usando extensiones de Chrome y principalmente javascript de vainilla.
Esta es la parte de content.js que es relevante (imagínese que el nombre de usuario se completó, actualizó la página de ingreso de contraseña después de recargar la extensión y ahora está haciendo clic en el botón de inicio de sesión):
document.body.addEventListener('click', function(e){ form = document.querySelector('form') form.removeAttribute("data-bind"); form.setAttribute("onsubmit", "return false;"); }La idea aquí es simplemente cancelar el envío del formulario, siempre que se haga clic en el botón de inicio de sesión.
Esto modificará efectivamente el DOM del formulario, al inspeccionar el formulario después de un clic (en cualquier parte de la página); sin embargo, al hacer clic en el botón de inicio de sesión, aún se activará el envío del formulario, enviando así la solicitud POST.
Después de muchas pruebas en direcciones separadas, llegué a la conclusión de que la solicitud de publicación real no se genera a través de un envío de formulario clásico, sino de un código personalizado que aún no he tenido tiempo de localizar.
Además, parece que el código JS del cliente de MS tiene prioridad sobre cualquier otra manipulación que mi código de extensión de Chrome intente insertar, por ejemplo, he intentado configurar todos los valores de entrada para que se vacíen justo al hacer clic en el inicio de sesión:
document.body.addEventListener('click', function(e){ document.querySelectorAll("input").forEach( elem => {elem.value=""}); }Mi mayor obstáculo en este momento es que quiero cancelar todos los eventos que están escuchando este botón de inicio de sesión, cada vez que se hace clic en él, e insertar mi propia lógica.
No sé si esto es técnicamente factible solo con vainilla, dado que el método principal para cancelar el envío de un formulario no parece funcionar aquí.
Por supuesto, si ve alguna otra dirección para cancelar el envío del formulario, me encantaría recibir cualquier idea que aún no haya pensado.