3

我尝试将参数 _trackPageview 传递给 Google Analytics。

我现在用

_gaq.push(['_trackPageview', <%=AntiXss.JavaScriptEncode(Url.RequestContext.HttpContext.Request.Path ) %> ])

“/Home/Index”的结果 Hml 是:

  _gaq.push(['_trackPageview', '\x2fHome\x2fIndex' ]);

我应该如何处理正斜杠?“\x2”会在 Google Analytics 中正常显示吗?或者用正斜杠替换 \x2 是否可以节省?

_gaq.push(['_trackPageview', <%=AntiXss.JavaScriptEncode(Url.RequestContext.HttpContext.Request.Path).Replace("\x2","/") %> ])

编辑:

我不能_gaq.push(['_trackPageview']);在没有路径参数的情况下使用,因为原始路径包含我不想跟踪的语言( /de/home/index 需要被跟踪为 /home/index )

4

2 回答 2

1

您实际上并不需要_trackPageview. 默认情况下,它将记录当前 url(包括查询参数)。任何给定页面上的该 url 都是从document.location.

其他解决方案:

  • 您已经提到的replace解决方案实际上已经足够好了。
  • 将 \x2f 留在路径中,它不会伤害您的眼睛/大脑以外的任何东西。
  • 您可以使用document.location或在纯 javascript 中执行此操作document.location.pathname吗?我猜想 URL 的查询或哈希部分是 XSS 攻击唯一需要担心的事情。
  • 通过将路径包装在字符串中并转义引号来转义路径而不是对其进行编码。你也可以去掉任何引号。
  • 不要对路径进行编码,它很可能是好的(除非它未经清理并且来自您的用户数据);而只是编码查询和哈希。
于 2013-07-09T01:07:56.510 回答
0

我倾向于使用 JavaScript 解决方案。尝试对数组进行切片以删除语言前缀并加入以组合路径:

pathnameArray = document.location.pathname.split('/').slice(2);
_gaq.push(['_trackPageview'], '/' + pathnameArray.join('/'));
于 2013-07-15T15:01:52.653 回答