2010-09-27 25 views
21

Tengo un iFrame con un formulario de comentarios en él. Después de que el usuario haga clic en enviar, quiero usar la ventana principal para desplazarse a la parte superior. Sé que puedo desplazarse a la parte superior de una página con:jQuery desplazarse a la parte superior del iframe principal

$('html, body').animate({scrollTop:0}, 'slow'); 

Sin embargo, esto sólo se desplazará el contenido del iframe, no la página principal. ¿Alguna sugerencia?

Respuesta

29

darle una oportunidad para éste:

window.parent.$("body").animate({scrollTop:0}, 'slow'); 
+0

¡Eso parece haber hecho el truco! Gracias :) – iltdev

+1

Sé que esta pregunta fue respondida hace casi un año, pero cuando intento esto, aparece el siguiente error: 'TypeError: Propiedad '$' del objeto [object DOMWindow] no es una función. Uso del JavaScript Consola en Google Chrome, puedo ver una función '$' definida en 'window.parent', pero cuando la exploro, dice que no está definida. ¿Hay alguna razón por la cual esta respuesta ya no sea válida? – sellmeadog

+19

No necesita jquery, si no le importa la animación, use window.parent.window.scrollTo (0,0); Deben estar en el mismo dominio por razones de seguridad. – devXen

8
<script> 
    jQuery(document).ready(function($) { 
     FB.Canvas.scrollTo(0,0); 
     FB.Canvas.setSize({width: 760, height:$('body').height()+20}); 
    }); 

    function scrollTo(x,y) { 
     $("body").append('<iframe id="scrollTop" style="border:none;width:1px;height:1px;position:absolute;top:-10000px;left:-100px;" src="http://static.ak.facebook.com/xd_receiver_v0.4.php?r=1#{%22id%22%3A0%2C%22sc%22%3Anull%2C%22sf%22%3A%22%22%2C%22sr%22%3A2%2C%22h%22%3A%22iframeOuterServer%22%2C%22sid%22%3A%220.957%22%2C%22t%22%3A0}[0%2C%22iframeInnerClient%22%2C%22scrollTo%22%2C{%22x%22%3A'+x+'%2C%22y%22%3A'+y+'}%2Cfalse]" onload="$(\'#scrollTop\').remove();"></iframe>'); 
    } 
</script> 
+2

FB.Canvas. scrollTo (0,0); esto es muy útil. buscando días gracias –

+5

Esta respuesta carece de mucha explicación ... es específica de la aplicación Facebook. Pero estaba tratando de resolver este problema para una aplicación de iFrame (lienzo) de Facebook, por lo que 'FB.Canvas.scrollTo (0,0);' era justo lo que necesitaba. – thaddeusmt

9

Esto parece hacer el truco, así:

$('html, body', window.parent.document).animate({scrollTop:0}, 'slow');

El second parameter a $ es el contexto que buscar.

1

Dentro de la página Iframe.

window.parent.ScrollToTop(); // Scroll to top function 

En la página parrent:

window.ScrollToTop = function(){ 
    $('html,body', window.document).animate({ 
    scrollTop: '0px' 
    }, 'fast'); 
}; 
+0

¿Funciona entre dominios? – Nubian

1

<body onLoad="window.parent.scroll(0,0);">

En el cuerpo de la página HTML del iframe

Es tan simple como que puede hacer!

Cuestiones relacionadas