破解Alexa以支持AngularJS

Hack Alexa to support AngularJS

本文关键字:AngularJS 支持 Alexa 破解      更新时间:2023-09-26

为了让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()。

为了模拟页面重新加载,我不得不添加以下代码:

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

我知道这个黑客攻击不是很可靠,因为Alexa可能会更改pageView跟踪策略。但我的目标是看看Alexa是否可以跟踪Angular应用程序。我想知道你对此事的看法?

当您将"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();
})