2012-02-28 77 views
10

我需要檢測第一次在jQuery中加載頁面,這樣我纔可以執行一些操作,只有當頁面加載第一次用戶導航到該頁面時。類似於服務器端代碼page.ispostbasck。我測試了$(document).ready,每次頁面加載時都會觸發,所以這不會提供我所需要的。我也嘗試了jQuery Load函數 - 它也觸發每一頁加載。所以通過頁面加載的一個例子是,我有一個HTML輸入標籤的類型按鈕的頁面,它不會觸發回發(如一個asp.net按鈕),但它會重新加載頁面並觸發$(document).ready用jQuery檢測第一頁加載?

謝謝

+2

你將不得不使用cookies花花公子。 – 2012-02-28 15:50:57

回答

6

事件不存在,只有當頁面第一次加載時纔會觸發。

您應該使用jQuery's .ready() event,然後堅持使用您選擇的方法(即cookie,會話變量,本地存儲等)處理首次頁面加載的事實。

注意:除非您可以將此信息存儲在數據庫中的用戶級別,否則此方法永遠不會是錯誤的證據。否則,只要用戶清除他們的cookies或者您選擇的任何方法,「第一次加載」的代碼就會再次觸發。

+4

他說什麼。 Jquery(和一般的JavaScript)在頁面加載之間沒有固有的持久性。 – 2012-02-28 15:54:18

16

你將不得不使用cookie來存儲第一負載信息:

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 2018-03-04 09:39:56

-2

簡單的解決方法是使用jQuery「一旦」插件

$(element).once('class-name', function() { 
    // your javascript code 
});