我需要从我们的分析报告中筛选内部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]尝试了上述内容,但此实施并没有成功过滤掉非学生。
有什么建议吗?
答案 0 :(得分:1)
代码的一个问题是_gaq
将是一个局部变量,与ga.js加载的_gaq
对象不同。因为_setAccount
& _trackPageview
不属于全球_gaq
,应该跟踪任何内容。
页面中是否有其他一组分析代码?
建议:
_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");
}
});
答案 1 :(得分:0)
也许您可以尝试使用Cookie。在QA工作站上简单设置一个cookie,如果设置了cookie,则不会调用Google代码。