2017-03-29 20 views
2
$('a').click(function (e) { 
    e.preventDefault(); 

    var newLocation = this.href; 

    $('body').fadeOut(250, newPage); 

    function newPage() { 
     window.location = newLocation; 
    } 
}); 

リンクをクリックするたびにページをフェードアウトさせることを意図しています。 HREFがあるときアニメーション後に前のページに戻ってスクロール位置を復元する方法は?

<a href='javascript:history.back()'>Link</a> 

通常、:問題は、このようなリンクがあるのJavaScript:history.back() '、それは私が欲しいもので、前のページ、上のスクロール位置に戻ります。このコードでは、ページの上部に移動します。どうすればこの問題を解決できますか?

+0

'? – NineBerry

+0

コードはページのすべてのリンクで動作するはずです。ほとんどのリンクは通常のリンクです...固定値を設定すると目的が崩れます。 –

+0

(1) 'javascript:history.back()'はヒストリオブジェクトのJavaScriptメソッドであり、URLではありません。 (2)URLに 'document.referrer'を使います。 – Abhitalks

答えて

0

history.backは関数です。それを関数と呼ぶ必要があります。 window.locationに割り当ててナビゲーション履歴に戻っても機能しません。

クリックしたリンクのhrefに基づいてコードの動作が異なります。

$('a').click(function (e) 
{ 
    e.preventDefault(); 
    var newLocation = this.href; 
    $('body').fadeOut(250, newPage); 

    function newPage() 
    { 
     if(newLocation == "javascript:history.back()") 
     { 
      history.back(); 
     } 
     else 
     { 
      window.location = newLocation; 
     } 
    } 
}); 

完全なテスト・セット:

Caller.html

<html> 
<head><title>Caller</title></head> 
<body> 
XXXXXXXXXXXXX<br/> 
XXXXXXXXXXXXX<br/> 
XXXXXXXXXXXXX<br/> 
XXXXXXXXXXXXX<br/> 
XXXXXXXXXXXXX<br/> 
XXXXXXXXXXXXX<br/> 
XXXXXXXXXXXXX<br/> 
XXXXXXXXXXXXX<br/> 
XXXXXXXXXXXXX<br/> 
XXXXXXXXXXXXX<br/> 
XXXXXXXXXXXXX<br/> 
XXXXXXXXXXXXX<br/> 
XXXXXXXXXXXXX<br/> 
XXXXXXXXXXXXX<br/> 
XXXXXXXXXXXXX<br/> 
XXXXXXXXXXXXX<br/> 
XXXXXXXXXXXXX<br/> 
XXXXXXXXXXXXX<br/> 
XXXXXXXXXXXXX<br/> 
XXXXXXXXXXXXX<br/> 
XXXXXXXXXXXXX<br/> 
XXXXXXXXXXXXX<br/> 
XXXXXXXXXXXXX<br/> 
XXXXXXXXXXXXX<br/> 
XXXXXXXXXXXXX<br/> 
XXXXXXXXXXXXX<br/> 
XXXXXXXXXXXXX<br/> 
XXXXXXXXXXXXX<br/> 
XXXXXXXXXXXXX<br/> 
XXXXXXXXXXXXX<br/> 
XXXXXXXXXXXXX<br/> 
XXXXXXXXXXXXX<br/> 
XXXXXXXXXXXXX<br/> 
XXXXXXXXXXXXX<br/> 
XXXXXXXXXXXXX<br/> 
XXXXXXXXXXXXX<br/> 
XXXXXXXXXXXXX<br/> 
XXXXXXXXXXXXX<br/> 
XXXXXXXXXXXXX<br/> 
XXXXXXXXXXXXX<br/> 
XXXXXXXXXXXXX<br/> 
XXXXXXXXXXXXX<br/> 
XXXXXXXXXXXXX<br/> 
XXXXXXXXXXXXX<br/> 
XXXXXXXXXXXXX<br/> 
XXXXXXXXXXXXX<br/> 
XXXXXXXXXXXXX<br/> 
XXXXXXXXXXXXX<br/> 
XXXXXXXXXXXXX<br/> 
XXXXXXXXXXXXX<br/> 
XXXXXXXXXXXXX<br/> 
XXXXXXXXXXXXX<br/> 
XXXXXXXXXXXXX<br/> 
XXXXXXXXXXXXX<br/> 
XXXXXXXXXXXXX<br/> 
XXXXXXXXXXXXX<br/> 
XXXXXXXXXXXXX<br/> 
XXXXXXXXXXXXX<br/> 
XXXXXXXXXXXXX<br/> 
XXXXXXXXXXXXX<br/> 
XXXXXXXXXXXXX<br/> 
XXXXXXXXXXXXX<br/> 
XXXXXXXXXXXXX<br/> 
XXXXXXXXXXXXX<br/> 
XXXXXXXXXXXXX<br/> 
XXXXXXXXXXXXX<br/> 
XXXXXXXXXXXXX<br/> 
XXXXXXXXXXXXX<br/> 
XXXXXXXXXXXXX<br/> 
XXXXXXXXXXXXX<br/> 
XXXXXXXXXXXXX<br/> 
XXXXXXXXXXXXX<br/> 
XXXXXXXXXXXXX<br/> 
XXXXXXXXXXXXX<br/> 
XXXXXXXXXXXXX<br/> 
XXXXXXXXXXXXX<br/> 
XXXXXXXXXXXXX<br/> 
XXXXXXXXXXXXX<br/> 
XXXXXXXXXXXXX<br/> 
XXXXXXXXXXXXX<br/> 
XXXXXXXXXXXXX<br/> 
XXXXXXXXXXXXX<br/> 
XXXXXXXXXXXXX<br/> 
XXXXXXXXXXXXX<br/> 
XXXXXXXXXXXXX<br/> 
XXXXXXXXXXXXX<br/> 
XXXXXXXXXXXXX<br/> 
XXXXXXXXXXXXX<br/> 
XXXXXXXXXXXXX<br/> 
XXXXXXXXXXXXX<br/> 
XXXXXXXXXXXXX<br/> 
XXXXXXXXXXXXX<br/> 
XXXXXXXXXXXXX<br/> 
XXXXXXXXXXXXX<br/> 
XXXXXXXXXXXXX<br/> 
XXXXXXXXXXXXX<br/> 

<a href="Callee.html">Go to Callee</a> 

</body> 
</html> 

Callee.htmlあなただけのNEWPAGE `でhistory.back()` `を呼び出していないのはなぜ

<html> 
<head><title>Callee</title></head> 
<body> 
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script> 
    <a href="javascript:history.back()">Go back</a> 

<script> 
$('a').click(function (e) 
{ 
    e.preventDefault(); 
    var newLocation = this.href; 
    $('body').fadeOut(250, newPage); 

    function newPage() 
    { 
     if(newLocation == "javascript:history.back()") 
     { 
      history.back(); 
     } 
     else 
     { 
      window.location = newLocation; 
     } 
    } 
}); 
</script> 

    </body> 
</html> 
+0

これはまったく同じ問題を抱えています。それは元に戻りますが、少なくともChromeではスクロール位置を復元しません。 –

+0

少なくともChromeとFirefoxでは正常に動作します。他に何かがある場合は、それが機能していないことを示す完全な例を提供してください。 – NineBerry

+0

ありがとうございます、その例は実際に動作します。私が見る唯一の違いは、私のページにはさらに多くのコンテンツ(数百の画像)があることです。たぶん問題は、コンテンツが十分に速く読み込まれない場合に発生します。私はそれを再現して共有しようとします。 –

関連する問題