cargar HTML en una capa
Alguien me puede decir como cargar desde una funcion javascript un html externo dentro de una capa.
Gracias
Gracias
Este es el procedimiento que uso yo, mifecha es una variable que contiene todo el codigo html que necesites, al ser una variable todo tienes que escribirlo en una misma lÃnea, cuidado con las comas simples pq te darán error, sustituyelas por '+"'"+' y todo solucionado. Funciona.
function pintaFecha2(mifecha)
{ if(document.all)
document.all('nombre_capa').innerHTML=mifecha;
else if(document.getElementById)
document.getElementById('nombre_capa').innerHTML=mifecha;
else if(document.layers)
{
with(document.layers['nombre_capa'])
{
document.open();
document.write(mifecha);
document.close();
}
}
}
function pintaFecha2(mifecha)
{ if(document.all)
document.all('nombre_capa').innerHTML=mifecha;
else if(document.getElementById)
document.getElementById('nombre_capa').innerHTML=mifecha;
else if(document.layers)
{
with(document.layers['nombre_capa'])
{
document.open();
document.write(mifecha);
document.close();
}
}
}
prueba con esto:
document.getElementById("id_de_la_capa").innerHTML="código HTML a incluir dentro de la capa. Tablas, imágenes, etc...";
document.getElementById("id_de_la_capa").innerHTML="código HTML a incluir dentro de la capa. Tablas, imágenes, etc...";
No puedes hacerlo directamente, sino que necesitas otro elemento, un IFRAME oculto de 1x1 pÃxeles, donde cargar las páginas antes de pasarlas a la capa.
Lo que tendrÃas que hacer es esto:
Cargas la página en el IFRAME, usando su propiedad src:
document.getElementById('mi_iframe').src = 'pagina.html';
Esperas a que el IFRAME haya terminado de cargar. Para ello, lo mejor y más compatible es que asignes al evento onLoad del cuerpo (BODY) de la página que está en el IFRAME una función JavaScript que envÃe el HTML del IFRAME a la capa:
document.getElementById('mi_iframe').onLoad = cargarCapa();
Y la función cargarCapa simplemente asigna el innerHTML del _cuerpo_ del IFRAME al innerHTML de la capa:
function cargarCapa()
{
document.getElementById('mi_capa').innerHTML = document.getElementById('mi_iframe').document.body.innerHTML;
}
Mientras se carga la capa, puedes escribir en ella un mensaje de espera.
Tengo una página que hice para probar lo que preguntas, en la que utilizo exactamente eso mismo, salvo que en lugar de modificar el onLoad de las páginas por código lo puse directamente en el HTML. Si entras a http://www.killerblade.es.tt lo podrás ver y echarle un vistazo al código.
Eso sÃ, creo que con Internet Explorer no funciona bien, más que nada por dejadez (lo hice usando DOM, el estándar, pero parece que eso a IE no le gusta), pero con Mozilla Firefox funciona perfectamente. Si todavÃa usas Internet Explorer será mejor que te plantees el cambio ya.
Lo que tendrÃas que hacer es esto:
Cargas la página en el IFRAME, usando su propiedad src:
document.getElementById('mi_iframe').src = 'pagina.html';
Esperas a que el IFRAME haya terminado de cargar. Para ello, lo mejor y más compatible es que asignes al evento onLoad del cuerpo (BODY) de la página que está en el IFRAME una función JavaScript que envÃe el HTML del IFRAME a la capa:
document.getElementById('mi_iframe').onLoad = cargarCapa();
Y la función cargarCapa simplemente asigna el innerHTML del _cuerpo_ del IFRAME al innerHTML de la capa:
function cargarCapa()
{
document.getElementById('mi_capa').innerHTML = document.getElementById('mi_iframe').document.body.innerHTML;
}
Mientras se carga la capa, puedes escribir en ella un mensaje de espera.
Tengo una página que hice para probar lo que preguntas, en la que utilizo exactamente eso mismo, salvo que en lugar de modificar el onLoad de las páginas por código lo puse directamente en el HTML. Si entras a http://www.killerblade.es.tt lo podrás ver y echarle un vistazo al código.
Eso sÃ, creo que con Internet Explorer no funciona bien, más que nada por dejadez (lo hice usando DOM, el estándar, pero parece que eso a IE no le gusta), pero con Mozilla Firefox funciona perfectamente. Si todavÃa usas Internet Explorer será mejor que te plantees el cambio ya.
Ups, he cometido un pequeño error:
En la lÃnea que cambia el onLoad del IFRAME, los paréntesis sobran. Asà que la lÃnea queda como sigue:
document.getElementById('mi_iframe').onLoad = cargarCapa;
Si no se ponen los paréntesis, se asigna la función. Si se ponen, se asigna _el resultado_ de la función.
En la lÃnea que cambia el onLoad del IFRAME, los paréntesis sobran. Asà que la lÃnea queda como sigue:
document.getElementById('mi_iframe').onLoad = cargarCapa;
Si no se ponen los paréntesis, se asigna la función. Si se ponen, se asigna _el resultado_ de la función.
