2013-03-21 34 views
4

如何在用戶請求另一個用戶之前停留在頁面上多長時間?或者直接離開該網站?跟蹤用戶在頁面上停留的時間?

基本上,我想要做一個檢查,如果用戶停留在頁面上20分鐘或更長的時間,然後做一些事情。

我相信這將需要PHP和JavaScript,但我不完全知道如何完成它。

也許在php中使用這個$_SERVER來獲得執行時間,然後得到一個時間戳,當用戶單擊其他地方,並簡單地比較兩者?

+1

這可能會有所幫助:http://stackoverflow.com/a/3893491/235710 – 2013-03-21 21:29:48

+0

你可以安裝谷歌分析 – 2013-03-21 21:41:54

+2

你能更具體地說明「做某事」的含義嗎?請記住,自從他們加載你的頁面以來,時間流逝*並不關聯他們已經*查看你的頁面的時間。我在瀏覽器中打開了標籤,我幾個小時都沒看過。 – 2013-03-21 21:56:09

回答

6

你可以用簡單的JavaScript做到這一切。
對於單頁:

window.setTimeout(function(){ 
// Do stuff after 20 minutes of loading the page 
// Then using jQuery you can call a PHP script to do stuff like so: 
$.ajax({ 
    url: '/myScript.php', 
    method: 'POST', 
    success: function(result){ 
     //The request was successful and the output is stored in a variable: result 
    }, 
    complete: function(){ 
     //Do stuff when the request is completed (Ignores if success or not) 
    }, 
    beforeSend: function(){ 
     //Do something before the request is sent 
    } 
}); 
}, 20 * 60 * 1000); //This is in milliseconds that's why I use the equation 


對於多頁:
我建議你設置一個用戶點擊一個頁面,上如果cookie存在的每個頁面檢查時的cookie。如果存在,則每隔x秒鐘執行一次查詢,以查看自創建cookie以來20分鐘是否已經過去。


對於全阿賈克斯的文件頭:http://api.jquery.com/jQuery.ajax/

+1

如果20分鐘過去了,我需要使用php。不是在PHP中,那麼我將如何使用你的代碼去做這件事? – Maaz 2013-03-21 21:32:26

+2

您使用Ajax請求。我會更新答案給你,所以這很明確:) – 2013-03-21 21:33:45

+0

也請記住標記爲回答:) – 2013-03-22 20:52:56

0

我已經把一些工作成一個小的JavaScript庫和服務,次用戶在網頁上多久。它具有更準確(不完美)追加用戶實際與頁面進行交互的時間長度的額外好處。它忽略了用戶切換到不同標籤頁,閒置,最小化瀏覽器等的時間。Google Analytics方法有一個缺點(據我瞭解),它只會檢查您的域處理新請求的時間,而不是始終準確。它不考慮,如果有人不再查看網頁,已經最小化瀏覽器,自去年加載你的頁面切換選項卡以3個不同的網頁等

僅供參考 - 無解的是完美的。但希望這個提供價值。您可以實施Javaacript API並自行收集統計信息,也可以使用完全爲您提供的服務。

http://timemejs.com

其用法的例子:

包括在你的頁面:

<script src="https://timemejs.com/timeme.min.js"></script> 
<script type="text/javascript"> 
TimeMe.initialize({ 
    currentPageName: "home-page", // page name 
    idleTimeoutInSeconds: 15 // time before user considered idle 
}); 
</script> 

如果你想自己的時間報告給後端:

xmlhttp=new XMLHttpRequest(); 
xmlhttp.open("POST","ENTER_URL_HERE",true); 
xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); 
var timeSpentOnPage = TimeMe.getTimeOnCurrentPageInSeconds(); 
xmlhttp.send(timeSpentOnPage); 

TimeMe.js也支持通過WebSockets的發送時間的數據,所以你不必試圖迫使一個完整的HTTP請求到document.onbeforeunload事件。

+0

timemejs的網址不工作(了)。它沒有https。 – marlar 2017-02-28 16:34:47

+0

謝謝!我已經修復了這個鏈接。 – 2017-03-04 13:53:40