0

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()
});

おそらくinが DOM オブジェクトを指していないため、 を呼び出しtrackLink()た結果はになりますか? (の代わりにオブジェクトを渡そうとする)のようなものに置き換えると、. 私は何を間違っていますか?undefinedthiss.tl()this$('a#submit')[0]thisundefined

4

3 に答える 3

1

s.tl の最初のパラメーターには、2 つの値のいずれかのみを指定できます。

関数が要素の onclick ハンドラとして呼び出されている場合、この関数は値 (この場合は要素の href 属性の値に解決される) を取ります。これが最初のパラメーターとして渡される場合、関数は新しいページが読み込まれる前に 500 ミリ秒の遅延を作成します。これは、追跡呼び出しが送信されるのに十分な時間を確保するためです。

関数がフォームまたは ajax 成功ハンドラーの一部としてなど、他のコンテキストで呼び出されている場合、最初のパラメーターはリテラル ( true ) である必要があります。この場合、関数は遅延を追加しませんが、追跡呼び出しを送信します。

あなたの場合、正しい署名は次のとおりです。

s.tl(true, 'o', 'Form Submitted');
于 2013-04-17T13:49:53.807 に答える
0

試す:

$.ajax({
    type: 'POST',
    url: submit.php,
    data: [data],
    success: trackLink.bind(this)
});
于 2012-02-23T19:20:06.857 に答える
0

機能設定を切り替えてみることもできます。

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');
}
于 2012-02-24T03:45:50.177 に答える