2016-06-30 9 views
0

私は次のスクリプトを持っていますが、変数 "ClientID"はどうにかして失われます(未定義)。これは "window.load"ステートメントのためですか? ClientID変数がこの関数に引き継がれることを確認するために何かできることはありますか?この文書毎の変数window.onloadを使用すると失われる

<script> 
      //Google analytics include 
      (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ 
      (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), 
      m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) 
      })(window,document,'script','https://www.google-analytics.com/analytics.js','ga'); 

      ga('create', 'UA-xxxxxx-x', 'auto'); 
      ga('send', 'pageview'); 

      //store clientId in ClientID variable 
      var ClientID = ga(function(tracker) { 
       return tracker.get('clientId'); 
      }); 

      //After whole DOM is loaded addEventListener and send ClientID 
      //Not working, somehow ClientID gets lost... 
      window.onload = function() { 
       var myl = document.querySelector('div.mylivechat_collapsed'); 
       myl.addEventListener('click', function() { 
        ga('send', 'event', 'contact', 'livechat' , ClientID); 
       }); 
      } 
</script> 
+0

https://developers.google.com/analytics/devguides/collection/analyticsjs/command -queue-reference#コマンドをキューに追加する – Teemu

+0

こんにちは、ヘルプファイルがどう役立つか分からない - この場合は何も見つかりません。私は、物事が初期化されているという問題に悩まされていると思います。変数は失われてしまいます。 –

+0

"次の関数シグネチャでga()コマンドキュー関数を呼び出すと、コマンドがキューにプッシュされます..."非同期に実行された関数から値を取得しようとしています。 – Teemu

答えて

0

https://developers.google.com/analytics/devguides/collection/analyticsjs/command-queue-reference#create

ga()機能がundefined返します。したがって、はundefinedになります。

私はあなたが正確に希望しているのかわからないんだけど、おそらくあなたが言うことを意味:

 window.onload = function() { 
      console.log('onload'); 
      var myl = document.querySelector('div.mylivechat_collapsed'); 
      myl.addEventListener('click', function() { 
       console.log('CLICK:',ClientID); 
       ga('send', 'event', 'contact', 'livechat' , tracker.get('clientId')); 
      }); 
     } 

そのような場合は、変数ClientIDは必要ありません。

0

を失ったが、を定義したことはありませんClientIdのがではないようだ。

<script> 
 
    //Google analytics include 
 
      (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ 
 
      (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), 
 
      m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) 
 
      })(window,document,'script','https://www.google-analytics.com/analytics.js','ga'); 
 

 
      ga('create', 'UA-xxxxxx-x', 'auto'); 
 
      ga('send', 'pageview'); 
 

 
      //store clientId in ClientID variable 
 
      var ClientID = ga(function(tracker) { 
 
       return tracker.get('clientId'); 
 
      }); 
 
    
 
      console.log('1:',ClientID); 
 

 
      //After whole DOM is loaded addEventListener and send ClientID 
 
      //Not working, somehow ClientID gets lost... 
 
      window.onload = function() { 
 
       console.log('onload'); 
 
       var myl = document.querySelector('div.mylivechat_collapsed'); 
 
       myl.addEventListener('click', function() { 
 
        console.log('CLICK:',ClientID); 
 
        ga('send', 'event', 'contact', 'livechat' , ClientID); 
 
       }); 
 
      } 
 
</script> 
 
<div class="mylivechat_collapsed">[CLICK ME]</div>

関連する問題