簡體   English   中英

Omniture SiteCatlayst跟蹤:使用jQuery從函數內調用s.tl()而不綁定click事件時出錯

[英]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 ,可能是因為thiss.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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM