Foros del Web » Programando para Internet » Javascript »

Como abir un frame ya cargado en ventana nueva?

Estas en el tema de Como abir un frame ya cargado en ventana nueva? en el foro de Javascript en Foros del Web. Tengo una web en html con partes en php. La página es una tabla dividida en celdas: Primera fila: Cabecera q une 2 columnas Segunda ...
  #1 (permalink)  
Antiguo 24/03/2004, 07:05
 
Fecha de Ingreso: marzo-2004
Mensajes: 90
Antigüedad: 20 años, 7 meses
Puntos: 0
Como abir un frame ya cargado en ventana nueva?

Tengo una web en html con partes en php.
La página es una tabla dividida en celdas: Primera fila: Cabecera q une 2 columnas
Segunda fila: un menu en la primera columna y el contenido en un frame creado en la 2ª columna.
Pues bien, al seleccionar una opción del menu, se llama a contenidos.php?opcion=XXXX y se carga en el frame comentado.
Lo q hace contenidos.php es conectarse a una base de datos, hacer una consulta, y, con los resultados mostrar una gráfica.
Con lo cual, si en el navegador veo el código fuente de dicho frame, me sale su titulo, ..., y en el cuerpo, los valores q me devovio la consulta a la base de datos y q le paso al applet q me genera la gráfica.
Lo q yo quiero es poner un botón en dicho frame q me permita abrir un pop-up o ventana nueva, con la gráfica.
Alguien me puede decir como hacerlo?
He pensado en hacer un boton q, simplemente, llame a contenidos.php con la opcion deseada, pero, si no me equivoco, eso haria q se volviera a tener q acceder a la base d datos, hacer la consulta y generar d nuevo la grafica...
Lo interesante sería q la nueva ventana tomara, creo q exactamente, el código html del frame y lo mostrase, ya q ahí ya estan los valores q debe tomar la gráfica y no sería necesario volver a consultar la base d datos.
¿Cómo puedo hacer eso?

Espero q alguien m haya entendido y pueda ayudarme...

Muchas gracias.

Salu2
  #2 (permalink)  
Antiguo 24/03/2004, 09:37
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años, 7 meses
Puntos: 1284
Hola jorgynh0:

Todos los navegadores modernos soportan innerHTML (aunque no sea estandar DOM)...

Tendrías que abrir el popup y escribir el contenido de ese frame (su body)

var popup = window.open("", "", "");
popup.document.open();
popup.document.writeln("<html><body>" + document.frames.tuFrame.body.innerHTML + "</body></html>");
popup.document.close();

...

Saludos
  #3 (permalink)  
Antiguo 24/03/2004, 13:30
 
Fecha de Ingreso: marzo-2004
Mensajes: 90
Antigüedad: 20 años, 7 meses
Puntos: 0
Muchisimas gracias por tu ayuda, caricatos.

Lo acabo de probar, pero me da un error.
Se abre la nueva ventana, pero, en la ventana principal, me da el siguiente error:
'document.frames.contenidos.body' es nulo o no es un objeto.

lo q hice fue añadir lo siguiente :

<script language="JavaScript">
function abre()
{
var popup = window.open("", "", "");
popup.document.open();
popup.document.writeln("<html><body>" + document.frames.contenidos.body.innerHTML + "</body></html>");
popup.document.close();
}
</script>

// y esto para añadir un boton

<input type=button value="Abrir" onclick="abre()">

Éso lo añadí al código q se carga en el frame de contenidos.

Quizás el problema esté en q, se le dice q escriba en el popup el body de tuFrame (...tuFrame.body...) y, el código q inserté y el botón están dentro del propio frame, con lo q es posible q no reconozca su propio nombre de frame y, por tanto, su body.
¿Puede ser éso?
En cualquier caso, sea lo q sea...como lo podría solucionar?

A ver si tú o alguien puede echarme una mano.

Gracias por adelantado.

Salu2

Última edición por jorgynh0; 24/03/2004 a las 13:32
  #4 (permalink)  
Antiguo 24/03/2004, 13:56
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años, 7 meses
Puntos: 1284
Hola otra vez:

Ahora recuerdo que el array de frames cuelga de window...

Supongo que cambiando document.frames... por window.frames tendría que funcionar.

Saludos
  #5 (permalink)  
Antiguo 24/03/2004, 14:44
 
Fecha de Ingreso: marzo-2004
Mensajes: 90
Antigüedad: 20 años, 7 meses
Puntos: 0
Muchas gracias por tu ayuda.

Pues d momento sigo sin conseguir q funcione, he cambiado lo q dices.
Sólo lo cambié donde ponía document.frames, los otros sitios donde pone document los dejé igual.
Es éso correcto?

Pero me sigue dando el mismo error.

Puede ser eso q decía yo de q el frame no se conoce a sí mismo o algo así?

Hay forma de saber los frames q reconoce la ventana prinacipal? con sus nombres? Es para saber si por alguna razón no reconoce el frame q quiero abrir en el popup...aunq todo funciona bien en la página...y en el menú digo q abra los contenidos en ese frame y no hay problema...

Muchas gracias.

Salu2
  #6 (permalink)  
Antiguo 24/03/2004, 15:50
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años, 7 meses
Puntos: 1284
Hola otra vez:

Tienes razón, faltaba algo...

window.frames.contenidos.document .body.innerHTML

Saludos
  #7 (permalink)  
Antiguo 25/03/2004, 02:26
 
Fecha de Ingreso: marzo-2004
Mensajes: 90
Antigüedad: 20 años, 7 meses
Puntos: 0
Nada, q no hay manera de conseguirlo...

Se abre la nueva ventana, pero en blanco, y en la principal sigue saliendo el error q dice:

'window.frames.contenidos.document' es nulo o no es un objeto

De vedad q gracias por ayudarme...a ver si se te ocurre algo nuevo...

Salu2
  #8 (permalink)  
Antiguo 25/03/2004, 02:27
 
Fecha de Ingreso: marzo-2004
Mensajes: 90
Antigüedad: 20 años, 7 meses
Puntos: 0
por si t sirve de ayuda, en el codigo del frame contenidos tengo:

<script language="JavaScript">
function abre()
{
var popup = window.open("", "", "");
popup.document.open();
popup.document.writeln("<html><body>" + window.frames.contenidos.document.body.innerHTML +

"</body></html>");
popup.document.close();
}
</script>
<input type=button value="Abrir" onclick="abre()">

SAlu2
  #9 (permalink)  
Antiguo 25/03/2004, 03:02
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años, 7 meses
Puntos: 1284
Hola otra vez:

¿El frame tiene el atributo name="contenidos"...?

Otra forma es:

window.frames["contenidos"].document.body.innerHTML;
ó
window.frames[1].document.body.innerHTML;

en este caso el 1 se equivale al orden del frame en la declaración de la página (el frameset)... y empieza con el 0...

Prueba a darle un número...

Si tienes un link hacia la página la podríamos ver.

Saludos
  #10 (permalink)  
Antiguo 25/03/2004, 03:50
 
Fecha de Ingreso: marzo-2004
Mensajes: 90
Antigüedad: 20 años, 7 meses
Puntos: 0
Con éso da el mismo error. Parece q es un problema de q no reconoce-encuentra el frame.

No tengo un link pq estoy trabajando offline...es una aplicación para la universidad y sólo trabajo online cuando estoy en el laboratorio.

A ver si te consigo explicar un poco como lo tengo:

En Index.php comienza...

<html>
.....
<head>....</head>
<body>
.....
y creo una tabla (como explicaba en el primer post) donde voy metiendo cabecera, menu y contenidos.
Cuando toy en la celda de menu, hago un include d menu.est q es un menu desplegable en javascript.
Tras ese include, cambio a la celda de contenidos q estará a la deracha del menú (centro de la pantalla) y tengo:

<iframe src='./contenidos.php' align='CENTER' border='0' hspace='0' vspace='0' frameborder='0' height='100%' noresize scrolling='AUTO' width='680' name='contenidos' bgcolor='white' leftmargin='0' topmargin='0' marginwidth='0' marginheight='0'>
</iframe>

es decir, en esa celda creo el frame

y cierro la tabla, body y html.

Entonces en el menu, al pinchar en un opción es:

makeMenu('sub2','Inter&eacute;s','./contenidos.php?opcion=accesos','contenidos')

Donde ese último contenidos le indica q donde se abre contenidos.php?opcion=accesos es en el frame 'contenidos'.

En contenidos.php hay unos cases q simplemente hacen un include del archivo correspondiente q se seleccionó en el menú, en este caso include accesos.con.

Y es ahí, en accesos donde se muestra laccede a la base d datos, se genera la gráfica...y donde metí el código para poner el botón de abrir el popup y todo éso.


Es un poco pesado...
Espero q te sirva para entender un poco lo q tengo y desrubir el fallo...
Seguramente será una tontería...espero no hacerte perder mucho tiempo.

Gracias.

Salu2

Última edición por jorgynh0; 25/03/2004 a las 03:53
  #11 (permalink)  
Antiguo 25/03/2004, 04:20
Avatar de tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 23 años, 2 meses
Puntos: 381
Nos vamos al foro de javascript

movido desde html

saludos
  #12 (permalink)  
Antiguo 25/03/2004, 04:27
 
Fecha de Ingreso: marzo-2004
Mensajes: 90
Antigüedad: 20 años, 7 meses
Puntos: 0
ok...es una mezcla d todo un poco...
  #13 (permalink)  
Antiguo 25/03/2004, 04:30
 
Fecha de Ingreso: marzo-2004
Mensajes: 90
Antigüedad: 20 años, 7 meses
Puntos: 0
caricatos, por si t sirve d ayuda, en el popup q se abre en blanco, en el título d la ventana pone:

http://localhost/mio/contenidos.php?opcion=accesos

q es lo q debería mostrar...

Salu2
  #14 (permalink)  
Antiguo 25/03/2004, 04:44
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años, 7 meses
Puntos: 1284
Hola otra vez:

Gracias por la aclaración... (ahora me perdí del todo... )

No me aclaro bien si quieres mostrar una tabla que está en el mismo marco, o en otro, pero parece que es un iframe... Tal vez sea suficiente poner "contenidos.document.body.innerHTML", o usar una ruta que vaya desde la página principal... parent.marco.contenidos...

Lo cierto es que detrás de contenidos tendría que venir document.body...

La cuestión es que hagas pruebas. La verdad es que sin ver la página es difícil saber donde está el problema...

Cuando puedas pon un enlace para verlo, porque la verdad es que no se me ocurre nada.

Saludos
  #15 (permalink)  
Antiguo 25/03/2004, 05:18
 
Fecha de Ingreso: marzo-2004
Mensajes: 90
Antigüedad: 20 años, 7 meses
Puntos: 0
No puedo subirlo a ningún sitio... intenté subir una parte pero no soy capaz...

A ver si consigo q me entiendas

La web es una tabla, en una de las celdas está el menú y, en otra celda, tengo puesto:
<iframe src='./contenidos.php' align='CENTER' border='0' hspace='0' vspace='0' frameborder='0' height='100%' noresize scrolling='AUTO' width='680' name='contenidos' bgcolor='white' leftmargin='0' topmargin='0' marginwidth='0' marginheight='0'>
</iframe>

Pues al seleccionar una opción del menú, en ése frame, de nombre contenidos, aparece lo seleccionado (una gráfica y títulos...)
A la vez q la gráfica, muestro el botón para abrirla en el popup.
Osea, quiero mostrar lo q hay en el frame contenidos en un popup, pero lo hago desde el mismo frame el boton diria "abre este frame en el q estoy en un popup" (en el frame también está el botón luego seguramente también aparecería en el popup...)

Espero no haberte despistado más...

Seguiré probando cosas con o q me dices

Salu2
  #16 (permalink)  
Antiguo 25/03/2004, 05:39
 
Fecha de Ingreso: marzo-2004
Mensajes: 90
Antigüedad: 20 años, 7 meses
Puntos: 0
Uffff POR FIN!!!!!

Lo acabo de conseguir!!!

Poniendo
...this.document.body.innerHTML...

El problema es q claro, me abre el codigo de ese frame código en el popup, pero sin cargar la hoja de estilos q tenia la pagina padre. con lo q sale sin colores y descolocado...

Quizás me sería mejor mostrar PARTE del contenido del body...no el body entero...solo querria mostrar en el popup la gráfica, no un título y una selección de fechas q salen sobre ella.

Habrá alguna manera de hacer éso?
Se te ocurre algo?

Muchas gracias, me has sido de grandísima ayuda

Salu2
  #17 (permalink)  
Antiguo 25/03/2004, 05:39
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años, 7 meses
Puntos: 1284
Hola otra vez:

Mira, hace un tiempo hice una página para probar los scripts y la tenía en mi ordenador, pero la subí para que veas si te puede servir: http://www.pepemolina.com/probador/index.html

Fíjate en el código. Puedes ver que pasa datos desde un formulario (el textarea) a un iframe... pero en este caso es preferible poner las etiquetas html y body (incluso lo que hubiera en el head)

Saludos
  #18 (permalink)  
Antiguo 25/03/2004, 05:41
 
Fecha de Ingreso: marzo-2004
Mensajes: 90
Antigüedad: 20 años, 7 meses
Puntos: 0
vaya, posteamos a la vez, voy a echar un vistazo a ese link, a ver si me sirve

Gracias

Salu2
  #19 (permalink)  
Antiguo 25/03/2004, 05:48
 
Fecha de Ingreso: marzo-2004
Mensajes: 90
Antigüedad: 20 años, 7 meses
Puntos: 0
Creo q tu página me puede servir de ayuda...
si la gráfica la meto dentro de algo (quizás un frame con lo q tendria el frame contenidos y luego el frame 'grafica' dentro de él).
Luego le digo q abra en el popup el frame de la gráfica.
Voy a probar y ya te contaré

Gracias

Salu2
  #20 (permalink)  
Antiguo 25/03/2004, 11:37
 
Fecha de Ingreso: marzo-2004
Mensajes: 90
Antigüedad: 20 años, 7 meses
Puntos: 0
Ya lo tengo hecho CASI todo.
Muchisimas gracias por tu ayuda.

No consigo hacer q, en vez de con el body entero, me habra el popup con un parte del Body (solo la parte de la gráfica).

Puedes ayudarme con éso?

Salu2
  #21 (permalink)  
Antiguo 25/03/2004, 11:42
 
Fecha de Ingreso: marzo-2004
Mensajes: 90
Antigüedad: 20 años, 7 meses
Puntos: 0
explico mejor para q se vea más claro, tengo ésto:

<script language="JavaScript">
function popupgrafica()
{
var popup = window.open("", "", "menubar=no, width=750, height=330, top=400, left= 350, resizable=yes");
popup.document.open();
popup.document.writeln("<html><body>" + document.body.innerHTML + "</body></html>");
popup.document.close();
}
</script>

<!------------------------------------ CALCULOS ------------------------------------------------>

<table name='qq' class="blanca" width="640">
<?php
if ( isset ($video) )
echo "<td colspan='2' class='naranja'>DATOS SOBRE LOS ACCESOS AL V&Iacute;DEO \"$video\"</td>";
else if ( isset ($seccion) )
echo "<td colspan='2' class='naranja'>DATOS SOBRE LOS ACCESOS A LA SECCI&Oacute;N \"$seccion\"</td>";
else echo "<td colspan='2' class='naranja'>ACCESOS HASTA EL D&Iacute;A DE AYER</td>";
?>
<tr/>
<td height="10" colspan="2" align="left"></td>
<tr/>

<td colspan="2" class="naranja">Configuraci&oacute;n</td>
<tr/>

<td height="10" colspan="2">
<form action="contenidos.php" target="contenidos" method="GET">
<input type='HIDDEN' VALUE="accesos" NAME="opcion">
<?php
include("./estructura/granularidad.php");
?>
<input type="SUBMIT" VALUE="Actualizar">
</form>
</td>
<tr/>






<td colspan="2" class="naranja">Accesos Totales</td>
<tr/>
<td height="10" colspan="2">
<?php
include("./grafiques/AccesosCalidades.php");
?>
</td>
<tr/>

<!------------------------------------BOTON PARA ABRIR GRAFICA EN POPUP------------------------->

<td><input type=button value="Abrir" onclick="popupgrafica()"></td><tr/>

<!---------------------------------------------------------------------------------------------->

Pues bien, todo éso está dentro del body y, al abrir el popup, sale todo éso y, a mi me interesaría q sólo saliese esta parte:

<td colspan="2" class="naranja">Accesos Totales</td>
<tr/>
<td height="10" colspan="2">
<?php
include("./grafiques/AccesosCalidades.php");
?>
</td>
<tr/>

es decir, mandarle sólo esa parte del body al popup.

Quiero mandarle esa parte, pero no esas líneas de código textualmente, sino q una vez q cargó la página, ya se incluyeron las líneas q crea ese include de php, q son las q llaman al applet de java q crea la gráfica.
Es éso lo q debería ir al popup, la líneas en html q recibe de
<?php
include("./grafiques/AccesosCalidades.php");
?>
al cargar la página.

Espero haberme explicado...
Cómo lo podría hacer?

Salu2

Última edición por jorgynh0; 25/03/2004 a las 11:47
  #22 (permalink)  
Antiguo 25/03/2004, 12:22
 
Fecha de Ingreso: marzo-2004
Mensajes: 90
Antigüedad: 20 años, 7 meses
Puntos: 0
Bueno, creo q ya lo he conseguido.

simplemente metí lo q le quiero pasar entre las etiquetas
<spam id='xxx'>
........................
</spam>

y donde creo el popup puse:

popup.document.writeln("<html><body>" + document.getElementById('xxx').innerHTML + "</body></html>");


Lo q no sé es q significa exactamente SPAM y no lo consigo encontrar, sé q es algo de estilo...

A ver si alguien me lo consigue expicar y si hay algo mejor q pueda utilizar q spam o si usar éso no es muy apropiado.

Muchisimas gracias por tu ayuda caricatos

Salu2
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 00:28.