problema con frames

lequarum
24 de Enero del 2005
Hola a [email protected] de nuevo:
Parece que hoy estoy algo espesa. Mi duda en este caso es la siguiente:

Tengo un manual de ayuda que quiero colgar de una aplicación, pero quiero que dependiendo de la parte en la que se encuentre de la aplicación, se le cargue una parte de la ayuda u otra.
El problema lo tengo en la funcion abrir:

function abrir(url,frame1,frame2){
var ventana=window.open(url,'','directories=no,location=no,menubar=no,resizable=yes,status=yes,toolbar=no,scrollbars=yes,width=700,height=450');
if(frame1 != "")
ventana.contenido.document.location = frame1;
if(frame2 != "")
ventana.principal.document.location = frame2;
}
pero me da errores de que contenido.document no es un objeto (contenido y principal son el nombre de mis frames)

¿Cómo puedo solucionar mi problema?
Gracias


scriptman
24 de Enero del 2005
Hola que tal, lo que pasa es lo siguiente:
estas abriendo una pagina web (url) en una ventana (window.open), y ésta ventana no tiene frames ni nada, los tendra sólo hasta que se haya cargado la pagina que los contiene; el codigo javascript se ejecuta enseguida, y estas referenciando a elementos que aun no existen (ventana.contenido.document.location).

Lo que debes hacer en lugar de llamar un URL y esperar a que se cargue una pagina externa, es imprimir (escribir) los frames en el momento, en la nueva ventana, ántes de referenciarlos, de lo contrario los frames no existen porque no estan ahi:

ventana = window.open("","", "directories=no..etc...");
ventana.document.write("<frameset rows... etc>");
ventana.document.write("<frame id='contenido' etc>");
ventana.document.write("<frame ...etc...>");
ventana.document.write("</frameset>");
//y continua con lo q ya tienes, ya existen los frames..
if(frame1 != "")
....etc...

Sustituye ...etc.. por lo que ovbiamente va ahi... lo que se esta haciendo es directamente escribir en la nueva ventana un documento HTML con frames (nombralos contenido y principal).

Cualquier duda, aqui.

Saludos, scriptman.
.::the information is out there, just take it::.