【问题标题】:Hack Alexa to support AngularJS破解 Alexa 以支持 AngularJS
【发布时间】:2016-01-05 10:56:47
【问题描述】:

为了让 Alexa 在基于 Angular 的应用程序上运行,我下载了 Alexa 代码 sn-p 并对其进行了分析。

似乎 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;
})

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

【问题讨论】:

    标签: javascript angularjs singlepage pageviews alexa


    【解决方案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();
    })
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-07-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多