2012-02-28 15 views
10

最初にjQueryでページが読み込まれるのを検出して、ユーザーがそのページに最初に移動したときにページが読み込まれるときにしかアクションを実行できないようにする必要があります。サーバーサイドコードpage.ispostbasckと同様です。私は$(document).readyをテストし、ページが読み込まれるたびに起動し、必要なものを提供しません。私はまた、jQueryのロード機能を試してみました - それはまたすべてのページの読み込みを開始します。だから、ページロードすると、私は、タイプボタンのページにHTML入力タグがあり、ポストバック(asp.netボタンのような)を起動しませんが、ページを再読み込みし、$(document).ready .readyjQueryで最初のページの読み込みを検出しますか?

ありがとう

+2

を使用することです。 –

答えて

6

ページが初めて読み込まれたときにのみ発生するイベントは存在しません。

jQuery's .ready() eventを使用して、選択した方法(Cookie、セッション変数、ローカルストレージなど)を使用してページロードを初めて処理したという事実を維持してください。

注:あなたはDBにおけるユーザレベルでこの情報を保存することができない限り、この方法は、証拠をだますことはありません。それ以外の場合は、ユーザーがクッキーを消去するか、または選択した方法によって、「最初に読み込まれた」コードが再び発生します。

+4

彼が言ったこと。 Jquery(および一般的なJavaScript)は、ページの読み込み間に固有の永続性がありません。 –

16

あなたは最初の負荷情報を保存するためにクッキーを使用する必要があります:

if (! $.cookie("cookieName")){ 
    // do your stuff 

    // set cookie now 
    $.cookie("cookieName", "firstSet", {"expires" : 7}) 
} 

注:上記の例jQuery Cookie pluginを使用しています。

6

私はこの問題に遭遇しましたが、これが私の扱いです。ページが読み込ま変数initialLoadを使用して、初めてのトラックを保管してください:

var initialLoad = true; 

$(document).ready(function() { 
    ... 
    ... 
    ... 

    initialLoad = false; 

}); 

は、その後、他の機能では、あなたがこれを行うことができます:

if (initialLoad) { 
    //Do work that is done when the page was first refreshed/loaded. 
} else { 
    //Do work when it's not the initial load. 
} 

これは私に適しています。ユーザーがすでにページ上にあり、いくつかのjQuery関数が実行されている場合は、そのユーザーがページをロードしたばかりか、既にページに入っているかどうかがわかりました。

+0

"私は$(document).readyをテストしており、ページが読み込まれるたびに起動し、必要なものを提供しません。" - 明らかに彼が求めたものではない – ghosh

-2

簡単な解決策は、あなたがクッキーの男を使用する必要がありますjQueryの「一度」プラグイン

$(element).once('class-name', function() { 
    // your javascript code 
}); 
関連する問題