使用 Google Analytics 跟踪网站上的社交推文

Tracking Social Tweets on Website with Google Analytics

我们有一个包含 Twitter Tweet 按钮的网站。我们希望跟踪点击推文按钮的社交事件。

我们正在使用较新的 Universal Analytics 并遵循以下示例: https://developers.google.com/analytics/devguides/collection/analyticsjs/social-interactions

对于 twitter,我们包含他们的 JS,如下所示:

<script async defer>
!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+'://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js,fjs);}}(document, 'script', 'twitter-wjs');
</script>

我们在绑定到 tweet 事件时遇到问题,如 Twitter 上所述: https://dev.twitter.com/web/javascript/events

问题是'twttr is not defined'。这里有一个类似的问题:

我已尝试在此处实施相同的方法,但我没有看到任何控制台日志?

<script>
window.addEventListener("load", function() {
    document.getElementById('twitter-wjs').addEventListener('load', function() {
      console.log('1');
        twttr.ready(function (twttr) {
          console.log('2');
            twttr.events.bind('tweet', function(e){
              console.log('3');
                if(!e) return;
                ga('send', 'social', 'twitter', 'tweet', theURL);
                console.log('tweet');
            })
        });
    }, false);
}, false);
</script>

我们如何在 GA 中跟踪 Twitter 推文点击次数?

问题是您要在 window 对象的 load 事件回调中为 Twitter 小部件脚本添加 load 事件处理程序。如果 Twitter 小部件的脚本代码是页面初始内容的一部分,那么浏览器将下载该脚本并 运行 它会在触发 windowload 事件之前。

换句话说,您脚本的 load 处理程序永远不会 运行ning 因为它的 load 事件已经发生了——在您为其添加侦听器之前。

您可以更新代码以在为脚本添加 load 侦听器之前检查 twttr 对象是否存在:

window.addEventListener("load", function() {

  function onTwttrReady() {
    twttr.events.bind('tweet', function(e){
      if(!e) return;
      ga('send', 'social', 'twitter', 'tweet', theURL);
      console.log('tweet');
    })
  }

  if (window.twttr) {
    onTwttrReady();
  } else {
    document.getElementById('twitter-wjs')
            .addEventListener('load', onTwttrReady);
  }
});