Je charge dynamiquement une iframe avec javascript. Après le chargement, comment puis-je faire défiler un nombre spécifique de pixels vers le bas (c.-à-d. Après le chargement de la page dans l'iframe, comment faire défiler l'iframe lui-même jusqu'à la région spécifiée de la page?)
Réponses
Trop de publicités?Vous pouvez utiliser l' onload
événement à détecter le moment où l'iframe a fini de charger, et de là, vous pouvez utiliser le scrollTo fonction de la contentWindow de l'iframe, pour faire défiler jusqu'à une position définie de pixels, d'en haut et à gauche (x, y):
var myIframe = document.getElementById('iframe');
myIframe.onload = function () {
myIframe.contentWindow.scrollTo(xcoord,ycoord);
}
Vous pouvez consulter un exemple ici.
Remarque: Cela ne fonctionne que si les deux pages de résider sur le même domaine.
Inspiré par Nelsons commentaire que j'ai fait cette.
Solution de contournement pour javascript Même la politique de l'origine en ce qui concerne l'aide .ScrollTo( ) sur le document d'origine sur un domaine externe.
Très simple de contourner cela implique la création d'un mannequin html de la page qui héberge le site web externe en son sein, puis de l'appel .ScrollTo(x,y) sur cette page une fois que c'est chargé. Alors la seule chose que vous devez faire est d'avoir un cadre ou un iframe mettre ce site web.
Il y a beaucoup d'autres manières de le faire, c'est de loin la plus simple façon de le faire.
*notez la hauteur doit être grande pour accueillir les barres de défilement valeur maximale.
--home.htm
<html>
<head>
<title>Home</title>
</head>
<frameset rows="*,170">
<frame src=body.htm noresize=yes frameborder=0 marginheight=0 marginwidth=0 scrolling=no>
<frame src="weather.htm" noresize=yes frameborder=0 marginheight=0 marginwidth=0 scrolling=no>
</frameset>
</html>
--weather.htm
<html>
<head>
<title>Weather</title>
</head>
<body onLoad="window.scrollTo(0,170)">
<iframe id="iframe" src="http://forecast.weather.gov/MapClick.php?CityName=Las+Vegas&state=NV&site=VEF&textField1=36.175&textField2=-115.136&e=0" height=1000 width=100% frameborder=0 marginheight=0 marginwidth=0 scrolling=no>
</iframe>
</body>
</html>