iframe内でページ遷移した時にjqueryを使って親ページのトップへ戻す方法

   

前回の記事、違うドメイン同士(クロスドメイン)でjqueryを使ってiframeの高さを自動取得する の時、メールフォームの確認画面やエラー画面の出し方がページを切り替える方式のためにiframe内を何回もページ遷移がありました。

iframe内でページ遷移をすると親ページはそのままなので、中身のすっごく下の方が表示されるんですね。
まるで同じページのように見せたい!というのがコンセプトなのでそれを実現するためにiframe内で遷移があったらページのトップへ戻るようにしました。
これもメモしときましょう。

前回のコード、iframeで読み込む側(親)

<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<title>iframe 自動で高さを取得するテストドキュメント(親)</title>
</head>

<body>

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
<script>
$(function()
{

// メッセージを受信したとき
$(window).on('message', function(event)
{
  // クロスサイトリクエストフォージェリ対策(送信元の検証)
  if (event.originalEvent.origin != 'http://読み込まれるサイト.com') return;
  
  // 受信した高さをiframeに設定
  $('.child-iframe').css(
  {
    'width': '100%',
    'height': event.originalEvent.data
  });
});


});

//ページ遷移時に親のトップ位置に戻すために追加
(function($){
	$(function(){
		var obj = $('#iframe');
		
		obj.on('load',function(){
			$(window).scrollTop(0);//0を変えるとトップから指定した位置にスクロール
		});
	});
})(jQuery);
//ページ遷移時に親のトップ位置に戻すために追加 ここまで
</script>

<iframe id="iframe" class="child-iframe" src="http://読み込まれるサイト.com/iframe.html"></iframe>
<!-- 前回のコードにidを追加 -->

</body>
</html>

以上、これにて完成しました(*゚▽゚ノノ゙☆パチパチ

参考にさせていただきました。ありがとうございますm(_ _)m
別ドメインのiframe内リンクをクリックされた時に親HTMLのスクロールを制御する方法

 - html, jquery