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>
'? – NineBerry
コードはページのすべてのリンクで動作するはずです。ほとんどのリンクは通常のリンクです...固定値を設定すると目的が崩れます。 –
(1) 'javascript:history.back()'はヒストリオブジェクトのJavaScriptメソッドであり、URLではありません。 (2)URLに 'document.referrer'を使います。 – Abhitalks