1

この手法http://www.bicobic.com/posts/BkFDo4CqcSnGcGtriを使用して Google アナリティクスを Meteor に追加しようとしていますが、うまくいきません (既に Google アナリティクス デバッガーで確認しました)。ユニバーサル アナリティクスのコードを試しています。

これが私のコードです

<template name="ganalytics"> 
   <div id="ganalytics"> 
   </div>    
 </template> 


 Meteor.startup(function() {
   isGanalyticsLoaded = false;

   //a scriptloaderfunction
   //if the script jsE1 loaded the callback is executed
   myScriptLoader = function funcMyScriptLoader(jsEl, callback) {
         if (window.attachEvent) {

 // for IE (sometimes it doesn't send loaded event but only complete)
        jsEl.onreadystatechange = function funcOnReadyStateChange() {
            if (jsEl.readyState === 'complete') {
               jsEl.onreadystatechange = "";
        } else if (jsEl.readyState === 'loaded') {
                jsEl.onreadystatechange = "";
        }

    if (typeof callback === 'function') {
      callback();
    }
  };
} else {
  // most browsers
  jsEl.onload = function funcOnLoad () {
    if (typeof callback === 'function') {
      callback();
    }
  };
}
 };  
});


Template.ganalytics.rendered = function() {  
   if(!isGanalyticsLoaded) {
      window['GoogleAnalyticsObject']='ga';
      window['ga']=window['ga']||function(){
         (window['ga'].q=window['ga'].q||[]).push(arguments)
      }, window['ga'].l=1*new Date();    

      var myGAJs = document.createElement('script'),
         s = document.getElementsByTagName('script')[0];
            myGAJs.type ='text/javascript';
            myGAJs.async = true;
            myGAJs.src = '//www.google-analytics.com/analytics.js';

    myScriptLoader(myGAJs, function funcEventLoaded() {
        isGanalyticsLoaded = true;
        ga('create', 'UA-XXXXXX', 'url');
        ga('send', 'pageview');  
     });
        s.parentNode.insertBefore(myGAJs, s);
    }
 };


 <template name="layout">
      <div>
      {{yield}}
    </div>
      {{yield 'ganalytics'}}
</template> 

私のコードの何が問題なのですか?

前もって感謝します。

4

1 に答える 1

2

新しい Google Analytics スニペットは Meteor では機能しないようですが、この古い最適化されたスタイルを HEAD に配置すると機能します。

var _gaq=[['_setAccount','UA-xxx'],['_setDomainName', 'example.com'],['_trackPageview']];
(function(d,t){var g=d.createElement(t),s=d.getElementsByTagName(t)[0];
g.src=('https:'==location.protocol?'//ssl':'//www')+'.google-analytics.com/ga.js';
s.parentNode.insertBefore(g,s)}(document,'script'));

これを実行して、クライアント側のエラーを GA に記録することもできます。

// log client-side errors to Google Analytics
window.onerror = function(message, file, line) {
  _gaq.push(['_trackEvent', 'JS Error', file + ':' + line + '\n\n' + message]);
};
于 2014-01-20T01:07:06.370 に答える