Los Foros
http://foros.espaciolatino.com/

Problema al acceder al ancla de un iframe
http://foros.espaciolatino.com/viewtopic.php?f=5&t=128
Página 1 de 3

Autor:  josemar2000 [ 28 May 2013 18:37 ]
Asunto:  Problema al acceder al ancla de un iframe

Hola a todos, espero me podáis solucionar este problema

Tengo una página con un iframe y al pinchar en un enlace de la página padre con un ancla a un punto de la pagina del iframe, quiero que la pagina padre haga scroll hasta el sitio donde tengo puesto el ancla en el iframe.
Este es el codigo del enlace y me funciona sólo con el IE con el resto de navegadores no, se queda estático, asi que tengo que mover yo el scroll hasta el punto donde tengo el ancla dentro del iframe
<a href="productos.html#adaptador" target="contenido">adaptador</a>
codigo del iframe
<IFRAME src="productos.html" id="contenido" frameBorder=0 width=597 height=700 scrolling="no" onload="resizeIframe(this.id)"></IFRAME>

Autor:  CTW [ 05 Jun 2013 19:47 ]
Asunto:  Re: Problema al acceder al ancla de un iframe

Tienes que usar JavaScript, por ejemplo algo así
En la parte de head de la página principal
<script type="text/javascript">
function iralAncla(nombre_ancla)
{
ifrm = document.getElementById("uniframe")
ifrm.src="test2.htm#" + nombre_ancla;
ifrm.scrollIntoView();
self.scrollTo(0, 0);
}
</script>

en el cuerpo pondes el elemento iframe
<iframe src="test2.htm" id="uniframe"></iframe>

Y el enlace en la página padre, sería como
<href="JavaScript:iralAncla('ancla1')>ir al ancla</a>

En el archivo test2.htm estará el elemento anchor de nombre ancla1.

Espero que esté claro.

Autor:  josemar2000 [ 07 Jun 2013 09:29 ]
Asunto:  Re: Problema al acceder al ancla de un iframe

Siento decirte que no funciona, con el firefox y el Chrome no hace absolutamente nada y con el IE la barra de scroll baja un poco, pero muy rápidamente vuelve a su posición inicial, arriba del todo.

El ancla en la página del iframe, test2.html, lo tengo puesto así
<div id="ancla1"></div>
que es correcto

Hasta ahora mientras encuentro otra solución lo estaba haciendo con esta función:
function scrollPagina(ancho,alto) {
window.scrollTo(ancho,alto)
}
Y en el enlace
<a onclick="scrollPagina(0,830)" href="test2.html" </a>
Poniendo a pelo en cada enlace la altura a la que se visualiza el ancla, para que la página padre haga scroll y valla a esa posición, pero es poco práctico.

Tu función tiene buena pinta pero necesitará algún ajuste

Autor:  josemar2000 [ 07 Jun 2013 10:47 ]
Asunto:  Re: Problema al acceder al ancla de un iframe

He estado investigando tu función, le he añadido una linea y ahora si funciona pero a medias, porque tengo varios enlaces a distintas anclas de la misma página y sólo hace scroll hasta el primer ancla, los demás los ignora.

Esta es la función modificada

function iralAncla(url,nombre_ancla)
{
ifrm = document.getElementById("uniframe")
ifrm.src=url + ".html#" + nombre_ancla;
ifrm.scrollIntoView();
ifrm = x.clientHeight;
self.scrollTo(0, 0);
}

Código de los enlaces:

<a href="JavaScript:iralAncla('test2','ancla1')"></a>
<a href="JavaScript:iralAncla('test2','ancla2')"></a>

A ver si se te ocurre que le pasa ahora, pero ya estamos cerca de la solución

Autor:  editor [ 12 Jun 2013 18:46 ]
Asunto:  Re: Problema al acceder al ancla de un iframe

Hola de nuevo
La línea que añades no debiera modificar el comportamiento, solo modifica la variable ifrm (el objeto iframe) después de haberlo usado. La siguiente línea self.scroll repone la página padre a la posición arriba, para evitar precisamente que haga scroll. Lo he comprobado con Firefox e iexplorer (v10, en modo compatibilidad y normal) y Chrome y va bien.
Haz una prueba, ve a
http://creatuweb.espaciolatino.com/test.htm

Copia el código fuente y compáralo con el tuyo...

Saludos

Autor:  josemar20000 [ 12 Jun 2013 23:52 ]
Asunto:  Re: Problema al acceder al ancla de un iframe

Yo tampoco se porqué añadiéndole esa línea funciona a medias y si no se la añades no funciona nada, pero es así
He comprobado desde la pagina que me has pasado y no funciona, ese es el funcionamiento normal, pero eso no es lo que yo quiero.

Coge la página y en el espacio que hay antes del iframe ponle unos cuantos párrafos hasta que desaparezca de la vista el iframe, después le quitas la opción de scrolling al iframe, pues así es como lo tengo yo, entonces ahora pinchas en cualquier enlace y es la página principal, NO el iframe la que tiene que hacer scroll y bajar hasta situarse en la posición en que se encuentre el ancla, si es el primero bajará menos y cuando pinches en el segundo bajará todavía más hasta situarse a la altura del segundo ancla, es la página padre la que se tiene que mover, NO la del iframe

Autor:  CTW [ 14 Jun 2013 09:47 ]
Asunto:  Re: Problema al acceder al ancla de un iframe

Pues no es lógico, el código cumple con todas las normas estándar, no hay trucos, y desde diferentes ordenadores he comprobado que funciona.
¿Qué versión de navegadores usas para comprobar?¿Puedes comprobarlo desde otros ordenadores?

Autor:  josemar20000 [ 16 Jun 2013 20:14 ]
Asunto:  Re: Problema al acceder al ancla de un iframe

He probado en varios ordenadores y no funciona, cuando tu pinchas en cualquiera de los enlaces lo que hace es ir a es ancla pero haciendo scroll en el iframe, pero el scroll de la página principal no hace nada, y eso vale cuando el iframe lo tienes a la vista y este solo te muestra una parte del contenido, pero en mi caso no me vale, porque entre los enlaces que están al principio de la página y el iframe hay bastantes cosas, con lo cual cuando pincho sobre estos el iframe no lo tengo a la vista, asi que me da igual que dentro de este me haga scroll porque ese contenido no lo veo hasta que no bajo manualmente con el scroll de la página principal y eso es precisamente lo que necesito que me haga el Script porque además el contenido del iframe me lo muestra entero, tengo anulada la barra de scroll.

Autor:  editor [ 17 Jun 2013 19:19 ]
Asunto:  Re: Problema al acceder al ancla de un iframe

Ahora entiendo, claro yo he supuesto que el iframes está siempre visible, si no es así la página padre (bueno madre) no se mueve Es necesario hacer scroll también a la página contenedora. Sustituye la línea donde pone
self.Scroll(parseInt(0,0))

self.ScrollBy(parseInt(0,ifrm.offsetHeight))


De esta forma la página hará un scroll vertical de longitud igual a la posición vertical del iframe.

Prueba a ver si va en la línea de lo que necesitas

Saludos

Autor:  josemar20000 [ 18 Jun 2013 13:56 ]
Asunto:  Re: Problema al acceder al ancla de un iframe

No funciona, en la página padre hace scroll y te lleva al comienzo del iframe, con lo cual ya tenemos este a la vista y en el iframe también te hace scroll y sube el ancla al comienzo del iframe, por eso da la sensación de que lo hace bien, por que ya tienes el ancla a la vista, pero no es eso, porque si tu tienes esta funcion onload="resizeIframe(this.id)" que es para que me muestre siempre toda la pagina que va en el iframe y por tanto ya en esa página no puede hacer scroll porque siempre está a la vista, entera, toda ella, asi que cuando pinchas en los enlaces, todos, se limitan a llevarnos al comienzo del iframe y ese es todo el scroll que hace la pagina padre, y ya da igual los anclas que tengas definidos en los enlaces porque siempre va ahí.
Ya empiezo a dudar de que se pueda hacer lo que yo estoy buscando

Página 1 de 3 Todos los horarios son UTC + 1 hora
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/