1

ユーザーが最初に自分のページにアクセスしたときに (リンクを介して、または URL を直接入力して)、いくつかの作業を行いたいと考えています。ただし、ユーザーが別の場所に移動し、戻る/進むボタンを使用して自分のページに戻ってきた場合、その作業をやり直したくありません。

これを達成するための最良の方法は何ですか?

注: ユーザーが更新ボタンを押してページの再読み込みを強制した場合は、作業を行う必要があります。

4

6 に答える 6

2
if (performance.navigation.type !== performance.navigation.TYPE_BACK_FORWARD) {
     //No back or forward button.
}

これを localStorage と組み合わせると思います。

于 2012-09-07T21:05:24.247 に答える
1

考えられるアプローチの 1 つを以下に概説しますが、これはまったくエレガントではありません。

  1. サーバーが生成したページにランダムナンスキーを埋め込む
  2. JS は、このランダムなノンスが Cookie に存在するかどうかを確認しますか?
    1. 存在しない場合は、Cookie に保存してスクリプトを実行します。
    2. 存在する場合、ページはブラウザーのメモリから読み込まれたため、新しい読み込みではありません。
于 2012-09-07T19:35:32.917 に答える
1

ただのアイデア:

通常、ブラウザは入力値を記憶しているため、戻ったときに表示されます。

入力 (CSS で非表示) を使用できます。

入力の現在の値に特別な値があるかどうかをオンロード チェックします (この値はサーバー側で生成する必要があるため、back/forward を使用しても更新されません)

<script  type="text/javascript">
jQuery(
  function($)
  {
    if($('#history').val()==$('#history').data('value'))
    {
      alert('you did use back/forward');
    }    
    else
    {
      $('#history').val($('#history').data('value'));
      alert('you did not use back/forward');
    }    
  }
);
</script>
<input style="display:none" id="history" data-value="<?php echo time();?>"/> 

ユーザーが back/forward を使用すると、input-value は data-value 属性と等しくなります (ただし、ユーザーが F5 キーを押した場合は異なります。これは、data-value-attribute も更新されるためです)。

于 2012-09-07T19:39:18.417 に答える
0

最善の方法は、HTML5 Web ストレージを使用することです。セッション ストレージを使用します。ページを最初にロードするときに、ローカルストレージ変数が設定され、データが保存されているかどうかを確認します。そうでない場合は、データを設定します。ユーザーが次/前のボタンを使用し、ページロードイベントが呼び出されたときに再び戻ってくると、ユーザーが以前にここにいたことを検出できます。最初のページ読み込みではありません。このデモ http://www.amitpatil.me/demos/html5-web-storage/web_storage.htmlを参照してください。詳細な記事はhttp://www.amitpatil.me/introduction-to-html5-feature-web-です。保管所/

于 2012-09-07T19:37:25.257 に答える
0

ここではLocalStorageがいいでしょう。Cookie と同様に機能しますが、クライアント側にのみ存在し、ヘッダーと共に何も送信されません。他の人も同じまたは似たようなことを言っています。

したがって、変数の値を現在のページの識別子に設定し、それを変数 A) 既存の変数、および B) 最初のページに設定されている変数に対して参照します。

<script>
if( !localStorage["lastPage"] && localStorage["lastPage"] != theFirstPageIdentifier ) {
   // this is the first view
   localStorage["lastPage"] = currentPageIdentifier;
}
</script>

注: 古いバージョンの IE (おそらく他のバージョン) では localStorage を使用できず、フォールバックのためにここで Cookie を使用できます。同じコンセプト。

これが機能することを示す例が必要だと思います: http://rlemon.github.com/demos/12323999/page1.htmlソースを表示。

于 2012-09-07T19:46:44.957 に答える
-1

あなたの問題の解決策は、現在のブラウザが開いている間は残り、その後期限切れになるセッションCookieを保存することだと思います-これはjQuery Cookieプラグインを使用して簡単です

次に、これと同じくらい簡単にCookieを設定できます

$.cookie("example", "foo");

あなたが話している作業は、Cookie が存在しない場合に実行され、Cookie が存在する場合は無視されます

于 2012-09-07T19:24:57.617 に答える