2013-05-03 72 views
4

我的查詢是我有一個鏈接重定向到另一個頁面。在webkit瀏覽器中,如何在發生重定向之前強制sitecatalyst服務器調用(腳本執行)完成?SiteCatalyst:跟蹤Webkit瀏覽器上的自定義鏈接

我正在使用sitecatalyst作爲入口。我有 已將自定義鏈接調用配置爲在webkit瀏覽器上包含 成功調用完成的doneAction參數(如Adobe指南中所述)。

的按鈕的onClick事件的自定義鏈接代碼如下:

<script language="javascript" > 
function search(keyword) 
{ 
var s=s_gi('testing'); 
s.linkTrackVars="prop11,events"; 
s.linkTrackEvents="event6"; 
s.prop11=keyword; 
s.events="event6"; 
s.tl(this,'o','Search',navigate()); 

window.location=searchresults.html; 
} 
</script> 

<script language="javascript" > 
function navigate() 
{ 
return false; 

/*To induce a delay to ensure that image request is sent to Adobe before the 
user leaves the page.(As given in Adobe guide - code release H.25)) 
Code version H.25 (released July 2012) includes an overloaded 
track link method (s.tl) that forces WebKit 
browsers to wait for the track link call to complete.)*/ 
} 
</script> 

然而,即使在此之後,我在自定義鏈接跟蹤收到錯誤。重定向發生在通話完成之前。

請幫助。提前致謝。

問候, Harshil

回答

5

好了,首先有一些問題你如何實現它。這裏是它應該如何看起來像一個例子:

<a href="searchresults.html" onclick="search('someKeyword');return false;">search</a> 

<script type='text/javascript'> 
function search(keyword) { 
    var s=s_gi('testing'); 
    s.linkTrackVars="prop11,events"; 
    s.linkTrackEvents="event6"; 
    s.prop11=keyword; 
    s.events="event6"; 
    s.tl(this,'o','Search',null,navigate); 
    return false; 
} 

function navigate(){ 
    window.location="searchresults.html"; 
} 
</script> 

幾點

  • 你實際上並沒有張貼鏈接或任何你正在使用調用search功能,所以我已經展示了一個鏈接舉個例子。
  • 您通過navigate函數作爲第四個參數時,它應該是第5(用空或空字符串作爲第4個佔位符)
  • 應該navigatenavigate()。你做到這一點的方式是,你正在調用函數並將函數的結果作爲參數傳遞。 s.tl需要實際的功能或對某個功能的引用,並且它會調用該功能。公平地說,Adobe文檔是錯誤的:它顯示用引號括起來的示例不起作用。
  • 重定向應該放置在navigate而不是search
+0

..okay?有沒有問題或你有什麼? – 2013-05-06 15:54:20

+0

對不起。我錯誤地發佈了這個。我正在嘗試您提出的更改。一旦完成,我會盡快告訴你。非常感謝答覆。 – 2013-05-07 05:46:35

+0

蠟筆, 非常感謝您的幫助。這現在可行! 除了where,我的s.tl()調用不在某個事件處理程序中。在這種情況下,它不起作用。 以下是這種情況的代碼:(在多個評論中發佈,因爲它超過了允許的字符限制) – 2013-05-08 11:19:02

1

與javascript函數

function trackLink(e) { 
    nextUrl = e.href; 
    e.href = "javascript:sendData('" + nextUrl + "')"; 
} 

function sendData(url) { 
    s.tl(this, "o", "Link Name", null, function() { 
     window.location.href = url; 
    }); 
} 

更換鏈接的href或請嘗試以下

function sendData(obj) { 
    s.tl(obj, "o", "Link Name", null, "navigate"); 
    return false; 
} 
<a href="new.html" onclick="sendData(this);return false;">Link</a> 
0

鏈接跟蹤跟蹤的恐龍形式的數字幾乎沒有準確的這些如果您沒有在用戶體驗之前進行分析,則需要幾天。我不明白的是,除非你無法控制下一步,否則你爲什麼不在下一頁而不是鏈接上測量它?

至於你的問題:以前關於如何防止事件執行之前的鏈接的例子是非常可靠的,但要記住,如果你有其他的JS代碼綁定,一定不要打破它。至於語法,您可以將所有變量作爲對象傳遞給s.tl函數,而無需爲s對象設置linkTrackVars和linkTrackEvents,如果您在動態頁面上使用代碼,可能會對事件產生負面影響。

E.g.

... 
var data = { 
    linkTrackVars="prop11,events", 
    linkTrackEvents="event6", 
    prop11=keyword, 
    events="event6" 
}; 
s.tl(this, "o", "Search", data, "navigate"); 
... 

注意:您不能在標準報告中實際使用道具和事件。根據您向Crayon發表評論的代碼,我可以看到您使用的是eVars,所以我認爲該示例並不準確。

+0

雖然一般情況下我會同意跟蹤鏈接點擊目標其他頁面,你已經跟蹤通常不是你應該做的事情,國際海事組織如果有合法的需要,跟蹤clic來自目標着陸頁的k通常也不是一個好主意。您無法通過單擊該鏈接來了解訪問者是否登錄到目標頁面,除非您有代碼,不允許訪問者訪問該頁面,除非先單擊該特定鏈接。網站很少以這種方式編碼,除了在轉換頁面或漏斗中的步驟(即使多次.. – 2014-05-19 13:32:06

+0

..網站沒有編碼)。即使你使用url參數來標記鏈接,但仍然不能保證訪問者通過點擊原始頁面上的鏈接與書籤並直接進入,或者鏈接被傳遞或顯示在serp等中 – 2014-05-19 13:33:30

+0

這就是爲什麼必須點擊數據才能設置數據,但請閱讀下一步。 URL參數不適合這種需求,而是第一方Cookie或會話存儲方法。我同意點擊和下一頁跟蹤都有其弱點,但從我的角度來看,跟蹤所有點擊無法確認我們點擊的點擊次數多於跟蹤所有點擊的鏈接,因爲根據不可靠性的方法。 – 2014-06-02 14:40:09