XSL - problemas ventanas modales

 
Vista:

problemas ventanas modales

Publicado por lobo (1 intervención) el 25/09/2007 12:41:17
Hola a todos, tengo un problema que os cuento a continuación
Tengo un documento XML el cual se transforma mediante XSL y con funciones javascript, he de abrir una ventana en modal, la consigo abrir con showmodaldialog, debo devolver el valor que se seleccione de la ventana modal a la página padre, el problema es que dialogArguments, me da error de no definido al ejecutar la funcion que devuelve el valor.

No se si alguien se habrá encontrado con este problema

Muchas gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro

Devolver valores de una ventana modal a la página padre

Publicado por Alejandro (227 intervenciones) el 06/07/2023 16:55:32
Cuando utilizas la función `showModalDialog` para abrir una ventana modal y deseas devolver valores de esa ventana a la página padre, puede haber problemas de compatibilidad debido a la forma en que los navegadores manejan esta función.

En su lugar, te recomendaría utilizar la función `window.open` para abrir la ventana modal y comunicarte entre las ventanas utilizando la función `window.postMessage`.

Aquí tienes una solución básica para lograrlo:

En la página padre (XSLT con JavaScript):
1
2
3
4
5
6
7
8
9
10
11
<script>
  function abrirVentanaModal() {
    var ventanaModal = window.open('ventana_modal.html', 'modal', 'modal=yes');
    ventanaModal.addEventListener('message', recibirMensaje);
  }
 
  function recibirMensaje(event) {
    var valorSeleccionado = event.data;
    // Hacer algo con el valor seleccionado
  }
</script>

En la ventana modal (ventana_modal.html):
1
2
3
4
5
6
<script>
  function seleccionarValor(valor) {
    window.opener.postMessage(valor, '*');
    window.close();
  }
</script>
En esta solución, utilizamos la función `window.open` para abrir la ventana modal y especificamos que sea una ventana modal mediante el uso del tercer parámetro `'modal=yes'`. Luego, agregamos un evento `message` al objeto `ventanaModal` para escuchar los mensajes enviados desde la ventana modal.

En la ventana modal, cuando se selecciona un valor, utilizamos la función `window.opener.postMessage` para enviar el valor seleccionado a la página padre. A continuación, llamamos a `window.close()` para cerrar la ventana modal.

En la página padre, definimos la función `recibirMensaje` que se ejecutará cuando se reciba un mensaje desde la ventana modal. Dentro de esta función, puedes acceder al valor seleccionado y realizar las acciones necesarias.

Ten en cuenta que esta solución utiliza JavaScript y no depende directamente de XSLT. Sin embargo, puedes integrar fácilmente este enfoque en tu código XSLT al utilizar la función `xsl:script` para insertar el código JavaScript en tu hoja de transformación XSLT.

Espero que esta solución te ayude a devolver valores de una ventana modal a la página padre al trabajar con XSLT y JavaScript.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar