2010-09-27 4 views
21

J'ai un iFrame avec un formulaire de commentaires. Après que l'utilisateur clique sur Envoyer, je veux utiliser la fenêtre parent pour faire défiler vers le haut. Je sais que je peux faire défiler vers le haut d'une page avec:jQuery faire défiler vers le haut du parent iframe

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

Cependant, cela ne fera que faire défiler le contenu de l'iframe, pas la page de parent. Des suggestions?

Répondre

29

Donnez un essai pour celui-ci:

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

Cela semble avoir fait l'affaire! Merci :) – iltdev

+1

Je sais que cette question a été répondue il y a près d'un an, mais quand j'essaie cela, j'obtiens l'erreur suivante: 'TypeError: La propriété '$' de l'objet [objet DOMWindow] n'est pas une fonction. console dans Google Chrome, je peux voir une fonction '$' définie sur 'window.parent' mais quand je l'explore, elle dit qu'elle n'est pas définie. Y a-t-il une raison pour que cette réponse ne soit plus valable? – sellmeadog

+19

Vous n'avez pas besoin de jquery, si vous ne vous souciez pas de l'animation, utilisez window.parent.window.scrollTo (0,0); Ils doivent être dans le même domaine pour des raisons de sécurité. – 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); c'est très utile. chercher des jours. merci –

+5

Cette réponse manque beaucoup d'explications ... c'est l'application Facebook spécifique. Mais j'essayais de résoudre ce problème pour une application Facebook iFrame (canvas), donc 'FB.Canvas.scrollTo (0,0);' était exactement ce dont j'avais besoin. – thaddeusmt

9

Cela semble faire l'affaire aussi bien:

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

Le second parameter à $ est le contexte de la recherche dans.

1

Sur la page Iframe.

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

Sur la page Parrent:

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

Est-ce que cela fonctionne sur plusieurs domaines? – Nubian

1

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

Dans le corps de la page html iframe

est aussi simple que vous pouvez faire!

Questions connexes