Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

122
Vistas
<webview>: ya se ha realizado una acción para este evento de "diálogo"

Necesito mostrar una página web en la vista web y hacer que ocurran ciertas navegaciones. Dado que la vista web no permite que pasen los diálogos de confirmación, quiero escuchar los eventos de diálogo en la vista web y luego pasar mi propio diálogo personalizado y hacer que la acción del usuario sea la que se tomará.

Escuchar la vista web del evento es bastante fácil:

 webview.addEventListener('dialog', this.onDialogOpen);

Y luego abro el diálogo con dicho método:

 private onDialogOpen (e: any): void { this.dialogOn = true; this.dialogEvent = e; }

Ahora lo que quiero es que el usuario interactúe con mi diálogo y pase su acción a este evento de diálogo, así:

 <button onclick="onDialogAction()">OK</button>

Y ejecuta el script:

 public onDialogAction() { this.dialogEvent.dialog.ok(); }

Pero en este punto me sale el error en el título:

webview: ya se ha realizado una acción para este evento de "diálogo".

Según tengo entendido, por alguna razón, el DialogEvent se 'obsoleta' una vez que ha pasado un tiempo. Si digo 'this.dialogEvent.dialog.ok();' dentro de onDialogOpen funciona. También puedo llamar a 'this.dialogEvent.dialog.ok();' desde cualquier otro método si lo llamo desde onDialogOpen. Sin embargo, si digo setTimeout dentro de onDialogOpen, deja de funcionar nuevamente.

¿Cuál sería la causa de esto y cuál sería la forma correcta de evitarlo?

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

La solución fue simple para cualquiera que llegara a esta pregunta desde una búsqueda:

Simplemente agregando

 this.dialogEvent.preventDefault();

a onDialogOpen() hace el truco. El problema era que la acción predeterminada para cualquier evento de diálogo era cancelar, y eso se activa por algún motivo cuando se carga el DOM. Pero se puede evitar que cualquier evento de diálogo se vuelva predeterminado con preventDefault() aparentemente.

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda