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

Javascript 使用Google Analytics跟踪网站上的社交推文,javascript,jquery,twitter,google-analytics,google-analytics-sdk,Javascript,Jquery,Twitter,Google Analytics,Google Analytics Sdk,我们有一个网站,上面有一个推特按钮。我们希望通过点击tweet按钮来跟踪社交事件 我们正在使用较新的Universal Analytics,并遵循以下示例: 对于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.getElement

我们有一个网站,上面有一个推特按钮。我们希望通过点击tweet按钮来跟踪社交事件

我们正在使用较新的Universal Analytics,并遵循以下示例:

对于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>

!函数(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');
我们在Twitter上描述了绑定到tweet事件的问题:

问题在于“未定义twttr”。这里有一个类似的问题:

我已经尝试在这里实现相同的方法,但是没有出现任何控制台日志

<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>

addEventListener(“加载”,函数(){
document.getElementById('twitter-wjs')。addEventListener('load',function(){
console.log('1');
twttr.就绪(功能(twttr){
console.log('2');
twttr.events.bind('tweet',函数(e){
console.log('3');
如果(!e)返回;
ga(“发送”、“社交”、“推特”、“推特”和URL);
console.log('tweet');
})
});
},假);
},假);

我们如何跟踪GA中的Twitter推特点击?

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

换句话说,脚本的
load
处理程序永远不会运行,因为它的
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);
  }
});

接下来,我用了你的帖子——改进了我的社交网络代码,谢谢你。