Foros del Web » Programando para Internet » Javascript »

Iframes y Document.write

Estas en el tema de Iframes y Document.write en el foro de Javascript en Foros del Web. Hola, soy nueva en este foro.. bueno la primera vez que escribo, ya que he leido bastantes cosas por aqui y muy utiles ademas. Bueno ...
  #1 (permalink)  
Antiguo 16/06/2008, 09:34
 
Fecha de Ingreso: junio-2008
Mensajes: 16
Antigüedad: 15 años, 10 meses
Puntos: 0
Iframes y Document.write

Hola, soy nueva en este foro.. bueno la primera vez que escribo, ya que he leido bastantes cosas por aqui y muy utiles ademas.

Bueno mi duda es la siguiente, a ver si me pueden ayudar..

Tengo una pagina compuesta de iframes, dos laterales con menus, uno central donde se cargan todas las paginas y uno superior llamado navegacion (que es una barra de navegacion del estilo: Estas en Inicio->Noticias)

Estoy programando la linea de navegacion a mi modo. Cada vez que se pulsa un enlace (desde cualquiera de los iframes), intento actualizar el iframe de navegacion llamando a una funcion javascript (en el evento onclick) que realiza lo siguiente:
function anadir(cadena){
top.frames['navegacion'].document.write(cadena);
}

pero esto me borra todo el contenido del iframe navegacion y lo cambia por la cadena que le paso..

He dado miles de vueltas buscando una solucion para poder añadir, pero no la encuentro.. no existe un document.append.. he probado tambien con innerHTML.. pero no es posible colocarle delante el top.frames['navegacion'].. y con getElementById('navegacion').innerHTML tampoco..

Alguien sabe como solucionarlo?

Gracias de antemano.
Vera.
  #2 (permalink)  
Antiguo 16/06/2008, 14:12
Avatar de Panino5001
Me alejo de Omelas
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.148
Antigüedad: 20 años
Puntos: 834
Respuesta: Iframes y Document.write

Para sobreescribir el body de tu iframe, primero tenés que acceder a él correctamente.
Esto sería así:
Código PHP:
var ifrDocument=document.getElementById('idDelIframe').contentDocument || document.getElementById('idDelIframe').contentWindow.document;
var 
ifrBody=ifrDocument.getElementsByTagName('body')[0];
alert(ifrBody.innerHTML);
//agregar algo adelante:
ifrBody.innerHTML='esto va adelante<br />'+ifrBody.innerHTML;
//para agregar detrás: ifrBody.innerHTML+='lo que sea'; 
  #3 (permalink)  
Antiguo 17/06/2008, 02:24
 
Fecha de Ingreso: junio-2008
Mensajes: 16
Antigüedad: 15 años, 10 meses
Puntos: 0
Respuesta: Iframes y Document.write

Muchisimas Gracias Panino5001!!! De verdad aun no me creo que con apenas cuatro lineas de codigo funcione.. y las vueltas que le habia dado!! Muchas gracias!

Aun me surgió otra pregunta. Como se podría borrar un trozo de lo que ya he escrito con el innerHTML?, pues seria ideal para mi barra de navegación.
Seguiré investigando.

De nuevo Gracias!!
  #4 (permalink)  
Antiguo 17/06/2008, 03:23
 
Fecha de Ingreso: junio-2008
Mensajes: 16
Antigüedad: 15 años, 10 meses
Puntos: 0
Respuesta: Iframes y Document.write

Buscando soluciones y probando me he topado con un nuevo problema..
la funcion anadir se ejecuta correctamente desde cualquier enlace de la pagina principal, pero no desde dentro de los iframes.. supongo que será porque estos ya no son visibles.

Por ejemplo en el iframe central, que es donde se cargan todas las paginas para ser visualizadas, hay enlaces, pinchando sobre estos deberia ir a la funcion anadir, para sobreescribir el iframe de navegacion.. pero la primera linea de esta funcion

var ifrDocument=document.getElementById('navegacion'). contentDocument || document.getElementById('navegacion').contentWindo w.document;

ya no la hace, supongo que navegacion ya no es visible :S

A ver si podemos encontrar otra solucion.
  #5 (permalink)  
Antiguo 17/06/2008, 05:06
 
Fecha de Ingreso: junio-2008
Mensajes: 16
Antigüedad: 15 años, 10 meses
Puntos: 0
Respuesta: Iframes y Document.write

Hola de nuevo, me respondo yo solita.. al final he dado la respuesta, parece que añadiendo window.parent a las lineas que me dejo Panino5001 puedo acceder a los iframes que quiera desde el resto de paginas cargadas en los distintos iframes:

me quedo asi:

var ifrDocument=window.parent.document.getElementById( 'navegacion').contentDocument || window.parent.document.getElementById('navegacion' ).contentWindow.document;

Busque soluciones para borrar un trozo del innerHTML.. pero no lo conseguí, asi que ideando un metodo por mi cuenta, y considerando que innerHTML contiene una cadena de texto..

Busco la cadena que envio para escribir, en lo que ya hay en innerHTML

var indice=(ifrBody.innerHTML).indexOf(cadena);

y dependiendo de eso reescribo el innerHTML con el trozo que quiera de substr(innerHTML,X,X) o simplemente añado innerHTML+=cadena.

No se si es una chapucilla o se podria mejorar.. por ahora tiraremos asi.
Si teneis alguna sugerencia por favor decidme!!

Muchisimas gracias de nuevo. Y espero que por lo menos a alguien le sirva.
1besito.
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 22:09.