Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 切换谷歌分析-选择退出/选择加入_Javascript_Angularjs_Google Analytics - Fatal编程技术网

Javascript 切换谷歌分析-选择退出/选择加入

Javascript 切换谷歌分析-选择退出/选择加入,javascript,angularjs,google-analytics,Javascript,Angularjs,Google Analytics,我已经实现了googleanalytics Opt out功能,但我真正需要的是一个选项,供用户undo他的操作 Lats说用户点击按钮选择退出,但随后改变了主意。在任何情况下,我们都希望进行跟踪,因此,用户可以选择再次启用跟踪是一件好事 我遇到的问题是不确定如何处理这个问题。本文末尾是JSFIDLE示例。 我首先要做的是包含跟踪代码,然后选择性地创建跟踪器 if (document.cookie.indexOf(disableGa + '=true') > -1) { windo

我已经实现了
googleanalytics Opt out
功能,但我真正需要的是一个选项,供用户
undo
他的操作

Lats说用户点击按钮选择退出,但随后改变了主意。在任何情况下,我们都希望进行跟踪,因此,用户可以选择再次启用跟踪是一件好事

我遇到的问题是不确定如何处理这个问题。本文末尾是JSFIDLE示例。 我首先要做的是包含跟踪代码,然后
选择性地创建跟踪器

if (document.cookie.indexOf(disableGa + '=true') > -1) {
    window[disableGa] = true;

    // Remove the tracker
    ga(function () {
        ga('remove', gaProperty);
    });

} else {

    // Create the tracker
    ga('create', gaProperty, 'auto', {
        anonymizeIp: true
    });
    ga('send', 'pageview');
}
因此,当用户到达页面时,我要么实例化createtracker,要么不实例化。 我不清楚的是
remove
属性

之后,页面上有一个按钮,允许用户切换GA状态

其功能与上述功能基本相同。但我也希望允许一个动态启用谷歌分析的选项

我正在按照以下示例处理cookie:

// Set to the same value as the web property used on the site
var gaProperty = 'UA-XXXX-Y';

// Disable tracking if the opt-out cookie exists.
var disableStr = 'ga-disable-' + gaProperty;
if (document.cookie.indexOf(disableStr + '=true') > -1) {
    window[disableStr] = true;
}

// Opt-out function
function gaOptout() {
    document.cookie = disableStr + '=true; expires=Thu, 31 Dec 2099 23:59:59     UTC; path=/';
    window[disableStr] = true;
}
然后我的想法是按用户请求注册/注销跟踪器,但我不确定是否正确

// Remove the tracker
ga(function () {
    ga('remove', gaProperty);
});
不确定这是否值得一提,但我在Angular应用程序中实现了这一点

另外,我有条件地执行创建和删除操作的原因是,我记得读到全局属性
window.ga-disable-UA-XXXX-Y=true
必须在发出
ga('create')
之前进行设置

对于我正在使用的调试,它报告在切换GA时重复使用跟踪ID。


正如您可能看到的,我成功地通过编程启用了google analytics,但删除是个问题。

我从未使用过remove,但它不接受参数-它按名称删除跟踪程序实例,而不是给定属性的跟踪程序(因此
ga('remove')
删除默认跟踪程序,
ga('myCustomTracker.remove')
删除命名的跟踪器实例“myCustomTracker”等


但是,我不确定你为什么要同时启用选择退出和删除跟踪器(当没有跟踪器实例时,选择退出是毫无意义的)。

我也尝试过以这种方式删除默认跟踪器,但似乎不起作用。我调试这一功能的方法是谷歌的“标记助手”,当我打开和关闭该选项时,会出现这样的情况:“相同的web属性ID被跟踪两次”。删除默认的跟踪程序是ga(“删除”)自己应该做的事情-你发现谷歌文档在这里不正确吗?顺便说一句,“相同的ID被跟踪两次”似乎是SPA的人工制品,或者至少是有角度的-这在前面的几个问题中出现了(阿法克没有回答)。我在上面的描述中添加了JSFIDLE。通过使用这个工具,我发现我没有注销Google analytics,每次启用分析时它都会不断添加新节点。