Buscar temas sin respuesta | Ver temas activos Fecha actual 17 Dic 2017 09:13



Responder al tema  [ 27 mensajes ]  Ir a página 1, 2, 3  Siguiente
 Problema al acceder al ancla de un iframe 
Autor Mensaje
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>


28 May 2013 18:37
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.


05 Jun 2013 19:47
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


07 Jun 2013 09:29
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


07 Jun 2013 10:47
Site Admin

Registrado: 14 Sep 2012 07:50
Mensajes: 36
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


12 Jun 2013 18:46
Perfil WWW
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


12 Jun 2013 23:52
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?


14 Jun 2013 09:47
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.


16 Jun 2013 20:14
Site Admin

Registrado: 14 Sep 2012 07:50
Mensajes: 36
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


17 Jun 2013 19:19
Perfil WWW
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


18 Jun 2013 13:56
Mostrar mensajes previos:  Ordenar por  
Responder al tema   [ 27 mensajes ]  Ir a página 1, 2, 3  Siguiente

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado


No puede abrir nuevos temas en este Foro
No puede responder a temas en este Foro
No puede editar sus mensajes en este Foro
No puede borrar sus mensajes en este Foro

Buscar:
Saltar a:  
cron
Desarrollado por phpBB® Forum Software © phpBB Group
Designed by ST Software for PTF.
Traducción al español por Huan Manwë para phpBB-Es.COM