Tengo un problema con un pequeño servidor que tiene mi sistema.
En la web tengo un botón para descargar un fichero.
Este desde JavaScript hace un post al Servet para crear el fichero a descargar y cuando el proceso es un success hago un
windows.open(/fichero).
Eso hace que el web browser abra el típico popup de descarga que todos conocemos o que lo descargué directamente (dependiendo de la configuración).
Mi problema es que desde el JavaScript no tengo ninguna forma de saber cuándo esa ventana de ha cerrado. Lo necesito saber porque necesito ejecutar otro comando cuento eso pase.
Puedes guardar una variable con lo que te devuelve el Windows open
Const popup = windows.open(…
Y luego tienes esto ( no se si he escrito bien el método)
Popup.onbeforeunload(() => { … })
Creo que te debería valer. Solo vale cuando el open habré algo dentro del mismo origin. Si eso no te funciona hay que tirar de hacks con setInterval mirando cuando popup.closed es true
Yo tengo un interval puesto que me comprueba con Windows.closed para hacer una cosa u otra.
El problema es que la ventana se cierra y ese valor nunca cambia
Pregunta absurda porque si pongo un botón (input Burton) con onclick=myfuction() defino esa función en el mismo html en local me funciona y cuando lo subo al servidor, no???
El botón está dentro de un div para Wire solo aparezca en una pestaña
Eso ya lo sé , el problema es que no detecta el botón.
Lo que me pierde es que por ejemplo si miro por fotos ves que te dicen que los pongas dentro de onready otro on pagecreate otros en submit. Uno lo coges de $(document) otros directamente del elemento y otras opciones y me pierdo
Si, hay muchas maneras de hacer lo mismo, ya me pasaba a mi al princpio que vas mirando de un sitio y de otro y las funciones no tenian mucha consitencia
Lo que me extraña es que en un sitio te vaya y en otro no el botón ahí ya no se que decirte.
Por favor seamos serios ( lo digo también por el otro comentario que dices despues )
Window.open no devuelve ninguna promesa
Tú puedes envolver sus funciones basadas en callbacks en promesas pero la realidad es que da igual.
El setInterval en este caso es un hack para un tema en concreto que es tener un hook para una ventana de un origin distinto
No te nos flipes tanto, pasando un link de promesas y luego diciendo que está empezando la casa por el tejado
Que por cierto lo que ha puesto del html es totalmente valido, que es eso de implementar jquery XD ahora no sabemos añadir eventos en html de forma nativa sin usar una librería como jquery pero vamos dando lecciones de cómo programar web usando promesas?
Si te funciona en local y no en un servidor tiene pinta que es el orden de cómo carga los ficheros JavaScript o algo parecido por qué si no es raro. En el navegador está bien cargado el fichero?
Normalmente si ese input Button lo tienes dentro de un formulario solo funciona de forma nativa los submit que pongas al form. Si quieres que funcione el botón tienes que poner type Button en la etiqueta del input, pero imagino que ya lo tengas asi.
De todas formas te recomiendo que en local también lo tengas todo ejecutando en un servidor así te libras de sorpresas