0

内部の QA 担当者を分析レポートから除外する必要があります。

現在、サイトには、訪問者が「学生」ロールの場合に情報 div を表示/非表示にするコードがあります。

$(document).ready(function(){
if($.inArray('student',ENV['current_user_roles']) === 1 && $.inArray('student',ENV['current_user_roles']) === 1 ){
  if ($.inArray('teacher',ENV['current_user_roles']) == -1 ){
  paramArray = window.location.href.split('/');
  if (paramArray.indexOf('assignments') == -1 && paramArray.indexOf('settings') == -1 && paramArray.indexOf('grades') == -1 && paramArray.indexOf('quizzes') == -1  && paramArray.indexOf('users') == -1){ 
    var l = $('#right-side-wrapper a.edit_link.button.button-sidebar-wide'); 
    if(l===null || l.length===0){
      $('body').removeClass('with-right-side');
    }
  }
}
} 
});

私は JavaScript に精通していませんが、このコードを再利用する簡単な方法があるようですが、Google アナリティクス トラッキング コードを内部にラップし、ユーザーが「学生」ロールの場合にのみロードします。

$(document).ready(function(){
if($.inArray('student',ENV['current_user_roles']) === 1 && $.inArray('student',ENV['current_user_roles']) === 1 ){
  if ($.inArray('teacher',ENV['current_user_roles']) == -1 ){
    var _gaq=[["_setAccount","UA-xxxxxxxx-1"],["_trackPageview"]];
    (function(d,t){var g=d.createElement(t),s=d.getElementsByTagName(t)[0];g.async=1;
    g.src=("https:"==location.protocol?"//ssl":"//www")+".google-analytics.com/ga.js";
    s.parentNode.insertBefore(g,s)}(document,"script"));
}
} 
});

インターネット [ https://gist.github.com/benbalter/902140 ] で見たものに基づいて上記を試しましたが、この実装では学生以外をうまく除外できませんでした。

何かアドバイス?

4

2 に答える 2

1

コードの問題の 1 つは、それがローカル変数になり、ga.js によって読み込まれるオブジェクト_gaqとは異なることです。&はグローバルになかった_gaqので、何も追跡されるべきではありませんでした。_setAccount_trackPageview_gaq

ページのどこかに別の分析コードのセットがありますか?

提案:

  • Google アナリティクスを読み込むコードをページ ヘッダーに配置しますが、_setAccount&_trackPageviewの部分は省略します。
  • _setAccountページの読み込み時に、条件付きで&_trackPageviewコマンドをプッシュします。

ページ ヘッダーでは、次のようになります。

<script type="text/javascript">
var _gaq = _gaq || [];
(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();
</script>

そしてページの読み込み時

$(document).ready(function(){
  if($.inArray('student',ENV['current_user_roles']) === 1){
    _gaq.push("_setAccount","UA-xxxxxxxx-1");
    _gaq.push("_trackPageview");
  } 
});
于 2013-10-02T19:35:55.190 に答える
0

Cookie を使用してみてください。QAワークステーションにCookieを設定するだけで、Cookieが設定されている場合、Googleコードは呼び出されません。

于 2013-10-02T18:25:00.450 に答える