1

window.location の使い方を知っています。問題は、(少なくとも FF では) 現在のページが履歴から消去されることです。たとえば、ページ A にいて、B に移動すると、window.location を使用して C に移動します。ページ C で [戻る] をクリックすると、B ではなく A に戻ります。

履歴から現在のページを消去せずに別のページに移動する他の方法はありますか?

編集: Firebug でコードを実行すると、これは起こりません。

これは、問題を示す非常に単純なページです(はい、コードが醜いことは知っています。実際のコードではありません)。

<html>
<head><script type="text/javascript" src="http://code.jquery.com/jquery-1.4.2.min.js"> </script>
<body>  
<div class="foo"></div>
<a href="javascript:$('.foo').html('<scri'+'pt type=&quot;text/javascript&quot;>window.location = &quot;c.html&quot;</s'+'cript>');">b</a>

EDIT2: jQuery が問題でsetTimeoutあり、答えです。他の誰かがこの奇妙なエッジケースに遭遇した場合に備えて、以下に私のソリューションを追加しました。

EDIT3: この例は、テストしやすいように単純化されています。実際の場合、クリック ハンドラーは HTML を返す Ajax 呼び出しを行うため、window.location = anything と書くだけでは全体を単純化することはできません。コードはサーバーから取得され、HTML に埋め込まれます。

4

5 に答える 5

3

setTimeoutが答えです。

$(div).html('<script...> setTimeout(function() { window.location = url; },10); </script>');

この問題はありません。これは、jQuery がインライン スクリプトを実行する方法 (要素script内にタグを作成することによって) と何らかの関係があるに違いありません。head

于 2010-02-24T20:50:18.427 に答える
0

を使用できますwindow.location.assign(URL)

于 2010-02-24T18:12:24.390 に答える
0

Firefox 3.6 ではその動作は見られません。あなたの例に従って、stackoverflow.com から google.com に移動し、そこから Firebug コンソール ウィンドウを使用して window.location = ' http://facebook.com ' を設定しました。そこに着くと、3つすべてが私のブラウザの履歴にありました..

于 2010-02-24T18:12:48.540 に答える
0

これは単なるハックであり、機能するかどうかはわかりません。window.history.back(1)を使用して URL を設定した後で試してください。window.location = URL;

お役に立てれば。

于 2010-02-24T20:36:13.037 に答える
-1

location.href場所の代わりに使用します。

于 2010-02-24T18:11:29.730 に答える