none
Abrir un botón con window.open RRS feed

  • Pregunta

  • Hola a todos:

    Tengo un botón en ventana1. Quiero que abra una nueva ventana, ventana2, con window.open. Eso lo hago con onclientclick.

    Desde esta ventana2 quiero acceder a un fileupload de ventana1, referenciarlo. ¿Cómo la puedo hacer? No puedo usar el previouspage,  no hace nada.

    Gracias de antemano

    lunes, 12 de octubre de 2015 6:34

Respuestas

  • Si te refieres a referenciarlo con javascript en el lado cliente, puedes usar window.opener para referirte a la ventana que abrió la actual:

    http://www.w3schools.com/jsref/prop_win_opener.asp

    Pero si lo quieres referenciar en lado servidor, olvídate: para cuando abres la ventana2 con window.open, la ventana1 YA NO EXISTE. Solo existe en el lado cliente, pero en el lado servidor, se instanció la clase, se envió el html al cliente, y se destruyó la clase antes de que el window.open haya construido la ventana2.

    • Marcado como respuesta volar.2014 lunes, 12 de octubre de 2015 9:09
    lunes, 12 de octubre de 2015 8:14
  • Parece que tiene que volver al servidor para que me dé el valor [...]


    Sí, claro que tiene que volver al servidor. El Session se guarda dentro de la memoria del servidor, no tiene ninguna forma de deterctar los cambios que se hacen en el cliente. Mientras no haya un postback que transfiera datos desde el cliente al servidor, el servidor sigue teniendo los mismos datos que almacenaste durante el anterior postback.
    • Marcado como respuesta volar.2014 lunes, 12 de octubre de 2015 12:31
    lunes, 12 de octubre de 2015 12:23

Todas las respuestas

  • Si te refieres a referenciarlo con javascript en el lado cliente, puedes usar window.opener para referirte a la ventana que abrió la actual:

    http://www.w3schools.com/jsref/prop_win_opener.asp

    Pero si lo quieres referenciar en lado servidor, olvídate: para cuando abres la ventana2 con window.open, la ventana1 YA NO EXISTE. Solo existe en el lado cliente, pero en el lado servidor, se instanció la clase, se envió el html al cliente, y se destruyó la clase antes de que el window.open haya construido la ventana2.

    • Marcado como respuesta volar.2014 lunes, 12 de octubre de 2015 9:09
    lunes, 12 de octubre de 2015 8:14
  • Hola:

    Lo resolví en parte usando variables de sesión. Digo en parte porque, al referenciarlo en ventana2 me da lo que puse en la variable de sesión anterior a window.open, Ejemplo, si el fufichero, la variable, vale 'fich1', cuando lo referencio me pone blancos ya que anteriormente no valia nada. Si hora fufichero vale 'fich2' y lo referencio, me da 'fich1'. Parece que tiene que volver al servidor para que me dé el valor correcto de fufichero.

    ¿Qué puede pasar?

    Gracias de antemano

    lunes, 12 de octubre de 2015 10:49
  • Parece que tiene que volver al servidor para que me dé el valor [...]


    Sí, claro que tiene que volver al servidor. El Session se guarda dentro de la memoria del servidor, no tiene ninguna forma de deterctar los cambios que se hacen en el cliente. Mientras no haya un postback que transfiera datos desde el cliente al servidor, el servidor sigue teniendo los mismos datos que almacenaste durante el anterior postback.
    • Marcado como respuesta volar.2014 lunes, 12 de octubre de 2015 12:31
    lunes, 12 de octubre de 2015 12:23
  • Hola:

    En ventana1 tengo un fileupload. Hago un window.open a ventana2.

    En el window.open paso el nombre de fichero del fileupload.

    Bien, ahora en window2 quiero grabar el fileupload, no antes porque tras el window.open pongo un return false para que no me vuelva al servidor. No uso variables de sesión.

    ¿Puedo grabar un fichero sabieno solamente el nombre de este fichero? ¿Hay alguna otra solución sin que tenga que volver al servidor tras el window.open?

    Gracias d antemano

    lunes, 12 de octubre de 2015 14:32
  • ¿Puedo grabar un fichero sabieno solamente el nombre de este fichero?


    Directamente usando solo HTML puro, no, no puedes. La ventaja del FileUpload es que si está dentro de un form y se hace un submit del form, entonces se envían al servidor todos los bytes de ese fichero que estaba en el lado cliente. Pero si solo tomas el nombre del fichero y lo envías a otra ventana, entonces esa ventana no sabe cómo enviar al servidor los bytes del fichero local. Si tienes un navegador moderno, se puede resolver a base de javascript, usando el File API en la primera ventana (porque requiere el input type=file) y pasándole el objeto a la segunda ventana, pero esto no funcionará en navegadores antiguos.
    martes, 13 de octubre de 2015 7:35