4

Alexa を Angular ベースのアプリケーションで動作させるために、Alexa のコード スニペットをダウンロードして分析しました。

Alexaはこの関数に依存しているようです:

fire: function (e) {
    this.user_cookie_v = this.muc();
    this.map(e, function (e, t) {
        this.opts[e] = t
    });
    // this.fired() check if "window._atrk_fired" is truthy 
    if (this.fired()) {
        return
    }

    window._atrk_fired = true;
    var t = new Image(1, 1);
    t.alt = "alexametrics";
    t.src = this.gen_url();
    this.cloudfront.fire()
}

Angular アプリケーションでは、ページがリロードされないため、「window._atrk_fired」が真のままである場合にのみ、イベント fire() が 1 回トリガーされます。

ページのリロードをエミュレートするために、次のコードを追加する必要がありました。

$rootScope.$on( "$routeChangeStart", function(event, next, current) {
    console.log('setting alexa fire value to false');
    window._atrk_fired = false;
})

Alexa が pageView 追跡ポリシーを変更する可能性があるため、このハックはあまり信頼できないことはわかっています。私の目標は、Alexa が Angular アプリケーションを追跡できるかどうかを確認することでした。この件についてご意見をお聞かせください。

4

1 に答える 1

1

「window._atrk_fired」をfalseに設定すると、atrk()を呼び出してfireメソッドを再実行する必要があるため、ルート変更イベントは次のようになります

$rootScope.$on( "$routeChangeStart", function(event, next, current) {
    console.log('setting alexa fire value to false');
    window._atrk_fired = false;
    atrk();
})
于 2016-02-10T09:28:37.643 に答える