Javascript 如何从analytics.js调用中提取输出变量以重定向?

Javascript 如何从analytics.js调用中提取输出变量以重定向?,javascript,redirect,google-analytics,cross-domain,server-side,Javascript,Redirect,Google Analytics,Cross Domain,Server Side,在我的工作中,我们尝试使用谷歌分析来进行跨域跟踪。问题是涉及到服务器端重定向。我们的解决方案是将google analytics信息附加到初始URL 我们有一个带有结帐按钮的购物车页面。单击checkout按钮触发btnCheckout\u OnClick,它创建一个URL,然后使用RegisterClientScriptBlock访问页面上的javascript函数。RegisterClientScriptBlock调用如下所示: ScriptManager.RegisterClientScr

在我的工作中,我们尝试使用谷歌分析来进行跨域跟踪。问题是涉及到服务器端重定向。我们的解决方案是将google analytics信息附加到初始URL

我们有一个带有结帐按钮的购物车页面。单击checkout按钮触发btnCheckout\u OnClick,它创建一个URL,然后使用RegisterClientScriptBlock访问页面上的javascript函数。RegisterClientScriptBlock调用如下所示:

ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "gaCrossDomain", "gaCrossDomain('" + checkoutUrl + "');", true);
function gaCrossDomain(url) {
    ga(function(tracker) {
        var linker = new window.gaplugins.Linker(tracker);
        var output = linker.decorate(url);
    });

}
同时,到目前为止,Javascript看起来是这样的:

ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "gaCrossDomain", "gaCrossDomain('" + checkoutUrl + "');", true);
function gaCrossDomain(url) {
    ga(function(tracker) {
        var linker = new window.gaplugins.Linker(tracker);
        var output = linker.decorate(url);
    });

}
ga函数调用是对analytics.js的调用。其工作原理如下:


然而,它不够详细。这个问题的底线是:如何从ga函数调用中获得“输出”?一旦我有了修改后的url,我就可以使用它进行重定向。或者,是否有任何方法可以在ga调用内部重定向?

在包装器函数中声明
输出,然后返回它:

function gaCrossDomain(url) {
    var output;
    ga(function(tracker) {
        var linker = new window.gaplugins.Linker(tracker);
        output = linker.decorate(url);
    });
    return output;
}
示例:

var src = gaCrossDomain('http://www.somesite.com');
console.log(src); 
// output: http://www.somesite.com?_ga=1.181772207.989393484.1440257672"

注意:返回的值仅在2分钟内有效,因此您不能在早期执行此操作并将其保存以供以后使用

在包装函数中声明
输出
,然后返回:

function gaCrossDomain(url) {
    var output;
    ga(function(tracker) {
        var linker = new window.gaplugins.Linker(tracker);
        output = linker.decorate(url);
    });
    return output;
}
示例:

var src = gaCrossDomain('http://www.somesite.com');
console.log(src); 
// output: http://www.somesite.com?_ga=1.181772207.989393484.1440257672"

注意:返回的值仅在2分钟内有效,因此您不能在早期执行此操作并将其保存以供以后使用

因此,理想情况下,我只需重定向,而不是返回输出。我用一个document.write(output)测试了这个想法,但没有产生任何效果。不应该是这样的,对吗?@user1038370不知道为什么它对你不起作用。。您的UA实例是否具有名称空间?实际上,我不确定此解决方案是否有效。这是一个问题,因为ga是异步加载的外部脚本。这是加载ga库时获取值的代码,是的。因此,听起来好像您试图在页面加载期间调用它,并且它和ga库之间存在竞争条件。正如我在笔记中提到的,返回的代码仅在2分钟内有效。因此,如果您试图在页面加载期间添加代码,那么当访问者稍后单击链接时,如果他们在添加代码后单击链接2m+,则代码可能会失效。因此,理想情况下,您应该生成代码并附加一个链接,这就是我们正在做的。“单击“签出”按钮会触发btnCheckout_OnClick,它会创建一个URL,然后使用RegisterClientScriptBlock访问页面上的javascript函数。”但我们无法从ga代码中获得“输出”,除非我们将其放入警报或其他东西中(我怀疑这只起作用,因为警报是在所有其他东西或其他东西之后执行的).因此,理想情况下,我只需重定向,而不是返回输出。我用一个document.write(output)测试了这个想法,但没有产生任何效果。不应该是这样的,对吗?@user1038370不知道为什么它对你不起作用。。您的UA实例是否具有名称空间?实际上,我不确定此解决方案是否有效。这是一个问题,因为ga是异步加载的外部脚本。这是加载ga库时获取值的代码,是的。因此,听起来好像您试图在页面加载期间调用它,并且它和ga库之间存在竞争条件。正如我在笔记中提到的,返回的代码仅在2分钟内有效。因此,如果您试图在页面加载期间添加代码,那么当访问者稍后单击链接时,如果他们在添加代码后单击链接2m+,则代码可能会失效。因此,理想情况下,您应该生成代码并附加一个链接,这就是我们正在做的。“单击“签出”按钮会触发btnCheckout_OnClick,它会创建一个URL,然后使用RegisterClientScriptBlock访问页面上的javascript函数。”但我们无法从ga代码中获得“输出”,除非我们将其放入警报或其他内容中(我怀疑这只会起作用,因为警报是在所有其他内容或其他内容之后执行的)。