Iframes

Hola a todos. Soy novato en esto de los blogs y esta es mi primera visita. Ok basta de charla y al grano. Mi pregunta es la siguiente.:
He creado una página web con un iframe. La idea es que todos los temas
(Páginas htm) que allí aparecen son abiertos en el iframe bueno hasta
ahora todo bien. Solamente tengo un problema y este es que cuando llamo
o alguien llama a una de éstas páginas en forma directa, ¿ésta se abre en forma directa (gran formato) y no en
el iframe de mi index.html. La pregunta es si existe algún código por medio del cual las páginas se me abran en el frame del index.html aunque sean llamadas directamente?
Por
Favor la explicación que sea lo más "sencillamente" posible ya que mis
conocimientos son limitado. Para más información la página es http://www.mondo-libero.com
Desde ya muy agradecido...
kapluje

1 Respuesta

Respuesta
1
Ya he observado tu web y hay una solución para lo que quieres. Puedes meter un pequeño javascript en todas las páginas que quieras que solo se abran en el iframe.
Lo que hace el script es comprobar la dirección con la que se está viendo la página, si no es la principal (es decir, si no se está viendo en el iframe) no se carga la página y te manda a la principal (o a la página que quieras, puedes usar otra diciendo que está prohibido ver la página directamente). Lo que ya no se puede hacer (o no de una forma sencilla que se me ocurra) es que al cargar la página principal te cargue el iframe con la que se intentó ver directamente (pero no veo que sea un gran problema).
Este sería el script, lo he adaptado a tu página pero debes probar que funcione:
<script language="JavaScript" type="text/JavaScript">
var a = top.location.href;
if((a!= 'http://www.mondo-libero.com /')&&(a!= 'http://www.mondo-libero.com/index.htm')) {
top.location.href = 'http://www.mondo-libero.com'
}
</script>
Espero que sea lo que necesitas. Recuerda cerrar la pregunta.
Hola aleja26, primero que nada gracias por darme una respuesta. Mira lo he probado
Pero me abre el index.html con la página de apertura (home.htm) que es donde sale el "prefacio" pero no me sale la página que yo quiero ( por ejemplo "http://mondo-libero.com/que_es_mitologia.htm). Ahora como dato adicional debo decirte (perdona que te tutee) que el nombre del iframe es "textfield", tal vez dentro del script deba ir alguna orden para que una determinada página se abra allí. Espero respuesta y desde ya muchísimas gracias.
Si pones un script como el que te he dicho en las páginas, éste puede cargar la página inicial en vez de cargar la que está intentado cargar directamente. Pero no puede acceder al frame de la página inicial (el ámbito de un script es la página donde está) . Pero he visto que poniendo la dirección correcta si se abre la página principal con el frame correcto. Parece que las páginas reales que no queremos que se vean directamente llevan un "-1" al final. En cambio si se pone el nombre sin el "-1" se abre la principal con el frame correcto. Lo que tenemos que hacer entonces es modificar el script que te he puesto para que haga eso. Si piden la página con "-1" se les manda a la página sin ello.
<script type="text/JavaScript"><!--
var a = top.location.href;
// Si la página contiene -1, es que se está intentando ver directamente. No queremos
if (a.indexOf("-1") != -1){
// Le quitamos el -1 y la cargamos. Así se carga la principal con ese frame
var pos = a.indexOf("-1");
top.location.href = a.substring(0, pos) + ".htm";
}
// --></script>
<script language="JavaScript" type="text/JavaScript">
var a = top.location.href;
// Si la página contiene -1, es que se está intentando ver directamente. No queremos
if (a.indexOf("-1") != -1){
// Le quitamos el -1 y la cargamos. Así se carga la principal con ese frame
var pos = a.indexOf("-1");
top.location.href = a.substring(0, pos) + ".htm";
}
</script>
Este script en todas las páginas con "-1" debería hacer que no se pudieran cargar directamente, y llamaran a la principal apreciendo en su frame.
Habría otras maneras de hacerlo. Por ejemplo en esta página explican otra manera de forzar el uso siempre de los frames: http://www.webreference.com/js/column36/forcing.html
Pero creo que el simple script que te he puesto debería ser suficiente para lo que necesitas. Recuerda cerrar la pregunta.
Hola aleja26. Gracias por contestarme. Mira debo decirte que me ha solucionado el problema en el caso de que alguien llamara directamente a las páginas "-1". Pero te debo una explicación: cuando hice la página principal (index.html) luego creé las secundarias sin "-1" ya vía el menu no había problemas para abrirlas dentro del iframe. Bueno luego me dí cuenta de que al tratar de abrir las páginas secundarias en forma directa no se abrían en el iframe del index y busque y consulté posibles soluciones pero no las encontré. Ahora lo que hice fue darle una solución "on-ortodxa" o no-profesional si la quieres llamar así. Lo que hice fue copiar por cada página secundaria un segunda página que es una copia del index que llevaría el nombre original de la página secundaria y a la página secundaria le he cambiado el nombre agregándole un "-1" ya que en la parte del iframe del index donde va el "href=home.htm" los cambie por los nombres de las páginas secundarias con el "-1". Espero que me hayas entendido lo que hice. Pero la idea era que en forma directa si llamaba a una página secundaria apareciera directamente en el iframe sin haber hecho este lío... en todo caso lo que me mandaste funciona ya que ahora se abrirar las páginas secundarias(-1) en el iframe aunque las llamen directa.
Muchas gracias y un abrazo fraternal desde Holanda.
(¿Dime qué debo hacer para darte puntos o votarte?
Me alegro que te funcione entonces. En esto casi no hay soluciones no-ortodoxas, todo son soluciones sin más.
Sólo tienes que cerrar la pregunta para darla por finalizada. Te aparecerá la opción de finalizar y puntuar.
Aún no has cerrado la pregunta y sigue saliendo en mis tareas pendientes.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas