2014-09-22 72 views
-1

我想要一個用戶點擊某個元素(使用clk類)在我的網站中加載跟蹤像素。僅對每個訪問者點擊一次的跟蹤像素加載(每個訪問者點擊)

我幾乎沒有任何jQuery的知識,所以我想出了這個代碼:

$(".clk").click(function(){ 
    $('<img src="/images/track.gif" width="1" height="1">').appendTo("body"); 
    }); 

首先,足夠好了嗎? (有沒有機會瀏覽器預先載入圖像?當然我不想)

其次,我只需要獲取第一次點擊的信息就足夠了。我不想跟蹤來自同一訪問者的那個元素的任何額外點擊(不是通過IP) - 我想我想每個會話都這樣做,這意味着如果窗口關閉了?還是應該關閉整個瀏覽器?) 。

我應該添加到代碼中以使其以這種方式工作?

+0

第一,的jsfiddle將使它更容易爲我們解答。 其次,我會做$(「」).attr(「src」,...)。 – Linial 2014-09-22 21:50:33

+1

jsfiddle如何幫助這裏?該腳本本身正在工作,我只是尋找其他建議或意見 – rockyraw 2014-09-22 21:52:10

+0

爲什麼這會更好?沒有必要定義尺寸? – rockyraw 2014-09-22 21:55:01

回答

0

瀏覽器有時會掃描JS並查找URLS。你可以很容易地改變它是更多的東西一樣:

var loaded = false; 
$(".clk").click(function(){ 
    if(loaded === false) { 
     loaded = true; 
     $('<img src="/images/track.gif?param=' + Date.now() + '" width="1" height="1" />').appendTo("body"); 
    } 
}); 

這應該解決這兩個瀏覽器預加載和「有它已經被點擊」的問題。您可能能夠刪除URL中的查詢參數,但如果瀏覽器執行了像這樣的URL的預提取或caxginh,我會感到非常驚訝。

+0

它是如何解決它是否被點擊?如果用戶打開頁面,點擊,然後再次點擊,圖片將不會被加載?如果他點擊,關閉窗口,然後再次進入,它會被加載?以及如果他完全關閉瀏覽器然後重新進入呢? – rockyraw 2014-09-22 21:53:56

+0

那麼,你在原來的問題中沒有說清楚你想讓它記住點擊刷新,瀏覽器關閉等。我已經更新了我的答案。你也可以使用cookies,但是新的,cookies。 – 2014-09-22 22:00:37

+0

謝謝,你能解釋一下更新代碼和前者之間的區別嗎?每個人對於「記住」用戶的方式做了什麼? – rockyraw 2014-09-22 22:03:32

0

我認爲@Jessie A. Morris的例子是相當不錯的,但要確定瀏覽器不會緩存跟蹤圖像我會親自使用一些更隨機的字符串(unix時間可以是一個很好的開始)。

另一件事是 - 我們是不是要跟蹤每個會話或每個瀏覽器/ pc/...用戶?

使用一些餅乾& & HTML5的localStorage然後將(有jQuery的許多插件)是恰當的...

+0

我想我會按照每個會話去,我不認爲我想爲此使用cookie。所以一旦頁面被刷新,我認爲它會被認爲是一個新的會話? – rockyraw 2014-09-22 22:05:46

+0

Hehe,@Jessie A. Morris你的下一個解決方案正是我所評論的:)也許向它添加AJAX(禁用緩存)也將是一個很好的接觸,JQuery使我們更容易... – nettutvikler 2014-09-22 22:05:57

+0

刷新頁面的新會話 - 我認爲這只是相同的會話延長(取決於服務器端,如果在會話超時前發生刷新(PHP有默認20分鐘)) – nettutvikler 2014-09-22 22:08:01