2011-11-02 35 views
4

我想知道的是,當用戶點擊我網站上的鏈接(內部鏈接 - 而不是其他網站)時,如果他們只是點擊了它或按住Ctrl單擊它(或右鍵單擊 - 在新標籤頁中打開)。我可以知道當人們在新標籤中打開我的網站上的鏈接嗎?

我使用PHP。

例如: 人在頁面1上,並點擊鏈接爲page2。 當他們在頁面2我想知道他們來自哪裏(_server ['http_referer']給了我,但我也想知道他們是否在新窗口/選項卡中打開頁面。我需要知道這一點,因爲頁面上的歷史回退按鈕。

這樣做的原因是要知道網站的瀏覽歷史記錄 - 我創建會話以跟蹤瀏覽歷史記錄(以便我可以在任何給定時間返回一頁,返回兩頁或返回三頁),但是我不希望會話在選項卡之間發生衝突,以便每個選項卡都有自己的瀏覽歷史記錄。這就是爲什麼我需要爲每個打開的選項卡創建新的會話。


我發現作爲一個可能的解決我的問題是使用類似的JavaScript這樣:

<script> 
var history_status = history.length; 
var referrer_site = document.referrer; 

if(history_status > 1 && referrer_site != "") { 
    alert(referrer_site); 
} else { 
    alert('No referrer site'); 
} 
</script> 

我需要改變一點點,但是這是我第一次演示,以檢查如果它的工作原理(和它一樣)

我首先需要查找瀏覽器用戶使用,因爲history_status第一頁的歷史賦予0,當你使用IE瀏覽器,但1,如果你使用的是Firefox或Chrome。

+1

您可以使用javascript'onready'和'history'對象來檢查是否有任何歷史記錄。如果是這樣,用戶只需點擊鏈接,就可以顯示/隱藏您使用PHP創建的歷史元素。 – Wulf

+0

瀏覽器已經擁有內置的「返回X頁面」功能(通常通過按下後退按鈕來觸發)。你爲什麼試圖重新發明輪子? – Quentin

+0

@Quentin你不明白我想要做什麼。用戶不應該決定他回去的頁數。 – birgir

回答

1

這聽起來不錯,用戶體驗不錯。後退按鈕並允許用戶打開新標籤是用戶期望以某種方式表現的。我個人會覺得很沮喪。如果他們無法爲該選項卡創建自己獨特的瀏覽記錄,那麼新選項卡中的關鍵點是什麼?

如果你真的想這樣做。使用數字創建一個cookie,在每個頁面上加載碰撞數字,並將該頁面URL存儲在數據庫中用於該會話。在頁面加載時,引入thr歷史並通過JavaScript將其加載到瀏覽器歷史記錄中。 Eeek。

+0

感謝您的答案,但我想我沒有用足夠的細節描述我的問題。 我也發現了一些方法,我可以用JavaScript來破解我的系統。 原因是因爲我填寫了表單,然後表單會出現另一個表單,但是當您保存時我想將您帶回兩個網站,這就是爲什麼我將會保存引用網站的會話。 – birgir

相關問題