![](/img/trans.png)
[英]Outbound link tracking - Google Analytics' _trackEvent() and Omniture's s.tl()
[英]Omniture SiteCatlayst Tracking: Error when calling s.tl() from within a function with jQuery without binding to click event
我想跟蹤用戶何時使用Omniture的“自定義鏈接跟蹤”提交表單。 此功能利用內置函數s.tl()
。 典型的設置如下所示:
$('a#submit').click(function () {
s.trackExternalLinks = false;
s.linkTrackVars = 'events,prop1';
s.linkTrackEvents = s.events = 'event1';
s.prop1 = s.pageName;
s.tl(this, 'o', 'Form Submitted');
});
單擊示例鏈接( <a id="submit">
)時,此代碼可以正常工作。 說,相反,我們想調用一個函數來觸發鏈接跟蹤:
// function to track custom link
var trackLink = function() {
s.trackExternalLinks = false;
s.linkTrackVars = 'events,prop1';
s.linkTrackEvents = s.events = 'event1';
s.prop1 = s.pageName;
s.tl(this, 'o', 'Form Submitted');
};
// Form Submission code calls trackLink()
$.ajax({
type: 'POST',
url: submit.php,
data: [data],
success: trackLink()
});
調用trackLink()
的結果undefined
,可能是因為this
在s.tl()
不再指向一個DOM對象? 用$('a#submit')[0]
類的東西替換this
(嘗試向其傳遞對象而不是this
)也會導致undefined
。 我究竟做錯了什么?
s.tl的第一個參數只能具有兩個值之一。
如果該函數被用作元素的onclick處理程序,則它將采用值-this-在這種情況下將解析為元素的href屬性值。 如果將此作為第一個參數傳遞,則該函數將在加載新頁面之前創建500ms的延遲,這是為了確保有足夠的時間發送跟蹤調用。
如果在任何其他上下文中(包括作為表單或ajax成功處理程序的一部分)調用該函數,則第一個參數必須為文字-true-。 在這種情況下,該函數不會添加延遲,但仍會發送跟蹤調用。
在您的情況下,正確的簽名是這樣的:
s.tl(true, 'o', 'Form Submitted');
嘗試:
$.ajax({
type: 'POST',
url: submit.php,
data: [data],
success: trackLink.bind(this)
});
您也可以嘗試切換功能設置。
function trackLink() {
s=s_gi(s_account);
s.trackExternalLinks = false;
s.linkTrackVars = 'events,prop1';
s.linkTrackEvents = s.events = 'event1';
s.prop1 = s.pageName;
s.tl(this, 'o', 'Form Submitted');
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.