Quand quelqu'un clique sur un lien dans une iframe (page enfant), comment faire défiler la page parent vers le haut? Le problème est que la page enfant restera au même endroit de la page, car l'iframe a beaucoup plus de hauteur que la page parent.
Veuillez noter: les pages parent et enfant sont sur des sous-domaines différents.
J'ai créé une démo pour montrer ceci: http://www.apus.edu/_test/iframe/index.htm
L'astuce consiste à ajouter la onload="window.parent.parent.scrollTo(0,0)"
suivante à la iframe
et cela devrait le faire!
En utilisant JavaScript dans l'iframe, référencez le parent et appelez la méthode scroll () .
window.parent.scroll(0,0);
Si vous avez des origines croisées (l'iframe et le parent ont des domaines différents), alors simplement appeler window.scrollTo (0,0) ne fonctionnera pas.
Une solution pour cross-Origin consiste à envoyer un message de confiance de l'iframe au parent.
Code à l'intérieur de l'iframe:
var parent_Origin = 'http://your/iframe/domain/here'
parent.postMessage({'task': 'scroll_top'}, parent_Origin);
Puis codez dans le parent:
function handleMessage(event) {
var accepted_Origin = 'http://your/iframe/domain/here';
if (event.Origin == accepted_Origin){
if (event.data['task'] == 'scroll_top'){
window.scrollTo(0,0);
}
// you can have more tasks
} else{
console.error('Unknown Origin', event.Origin);
}
}
window.onload = function() {
window.addEventListener("message", handleMessage, false);
}
Dans la page Iframe.
window.parent.ScrollToTop(); // Scroll to top function
Sur la page parent:
window.ScrollToTop = function(){
$('html,body', window.document).animate({
scrollTop: '0px'
}, 'fast');
};