2012-09-07 48 views
1

我想在用戶首次登錄我的頁面(通過鏈接或直接輸入URL)時執行一些操作。但是,如果用戶在其他地方關閉並通過後退/前進按鈕返回到我的頁面,則我不想再次執行此操作。只有在第一頁加載時才能工作,而不是在用戶通過後退/前進時加入

達到此目的的最佳方法是什麼?

注意:如果用戶點擊刷新按鈕,強制重新加載頁面,應該完成該工作。

+2

回到/轉發你的意思是在瀏覽器歷史記錄中回退/轉發嗎?如果是這樣,這是不可能通過Javascript來檢測。 –

+0

您可以在本地存儲中存儲一些有點標誌。這就是我能想到的所有... – elclanrs

+0

@HenrikAmmer,我澄清了這個問題。我希望可能有一些方法來實現這一點。 – aleemb

回答

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

結合這與localStorage我想。

+0

這不適用於目標頁面,只能在用戶遠離的頁面上運行 – aleemb

+0

@aleemb你是什麼是什麼意思?對我來說可行 – Esailija

+0

抱歉,沒有注意到這是性能庫的一部分。在測試中,它在Chrome中運行得很好,因爲沒有hav以使用本地存儲。 – aleemb

-1

我覺得你的問題的解決方案將存儲會話cookie將保持,而目前的瀏覽器打開,然後將到期 - 這是很容易使用jQuery Cookie Plugin

然後你就可以作爲很容易地設置cookie,因爲這

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

你說話,如果cookie是不存在關於將被執行,而忽視這項工作的cookie存在

+0

如果用戶在頁面上手動刷新頁面,則Cookie仍然存在,工作將不會執行。在這種情況下,應該執行工作,因爲用戶手動刷新了頁面。 – aleemb

+0

你可以把日期時間放在那裏,並保持頁面設置的時間量,我不認爲有一種方法在JavaScript或jQuery中檢測頁面是否來自後退按鈕並檢測頁面是否正在刷新,在服務器端代碼這很容易完成 –

1

一個可能的方法概述如下,雖然,它不是在所有的優雅。

  1. 嵌入到服務器生成的頁面一個隨機數鍵
  2. JS檢查是否在cookie存在這個隨機數?
    1. 如果不存在,請將其保存在Cookie中並運行腳本
    2. 如果存在,頁面將從瀏覽器內存中加載,因此不是全新的加載。
0

最好的辦法是使用HTML5 Web存儲,使用會話存儲。當頁面第一次檢查本地存儲變量是否被設置並存儲了一些數據時,如果沒有,那麼設置數據,如果用戶使用next/prev按鈕並且當頁面加載事件被調用時再次返回,則可以檢測到用戶在此之前已經和它的不是第一頁加載。看到這個演示 http://www.amitpatil.me/demos/html5-web-storage/web_storage.html這裏是詳細的文章http://www.amitpatil.me/introduction-to-html5-feature-web-storage/

+0

這是行不通的。用戶進入該頁面,將密鑰123存儲在存儲器中。現在用戶點擊刷新按鈕,鍵123存在,所以你不做這項工作,但你真的應該因爲這是刷新而不是歷史導航。 – aleemb

+0

你是對的,我沒有想過這種可能性:(還有另一種解決方案window.onbeforeunload = function(){}但也沒有在「刷新」,窗口刷新和回/下一個按鈕調用此功能,所以我想它不是 –

1

只是一個想法:

瀏覽器通常記住的輸入值,所以當你導航回他們將出席會議。

您可以使用輸入(使用CSS隱藏)。

的Onload檢查輸入的電流值也有一個特殊的值(必須在服務器端生成的這個值,所以當你使用後退/前進也不會刷新)

<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();?>"/> 

當用戶使用後退/前進,輸入值等於數據值屬性(但不是當用戶點擊F5時,因爲那麼數據值屬性也會刷新)。

0

LocalStorage將很高興在這裏。與cookie類似,但只存在於客戶端,Nothing與頭部一起發送。其他人表示相同或相似,我希望這個例子能告訴你這是多麼容易。

因此,您將設置變量的值爲當前頁面的標識符,並將其引用到變量A)存在,並將B)設置爲第一頁。

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

注意:localStorage不適用於舊版IE(也許是其他版本),並且cookie可用於此處作爲回退。相同的概念。

我覺得你需要一個例子來向你展示這個工作:http://rlemon.github.com/demos/12323999/page1.html查看源代碼。

+0

將無法​​正常工作,理由與@ www.amitpatil.me – aleemb

+0

的答案給出的更新。可能不工作,但概念是健全的。 – rlemon

+0

@aleemb我已經上傳了一個小演示你只會在第一頁提醒第一個視圖,代碼可以修改以適應多種不同的場景 – rlemon

相關問題