1

因此,我们刚刚重新启动了我们的网站,将其作为支持 Backbone 的单页应用程序,但我们正在使用 Google Analytics 跟踪我们从 AdWords 广告到网站的转化。

问题在于,为了让 Google Analytics(分析)跟踪用户来自 AdWords 的事实,它会查找 URL 中调用的 URL 查询参数gclid

http://test.com/?gclid=(Q#kjsdf0INKJSDJF9

但是,当 Backbone 的路由器初始化时,它会从 URL 中删除所有查询参数,因此当跟踪事件触发时,它不会看到用户来自 AdWords 广告。

我们尝试将用户发送到加载分析代码并等待事件触发然后将它们转发到站点的插页式页面,但是

  1. 它丑陋,并在一段时间内向用户显示空白页面
  2. 如果不等待 IE8 用户(遗憾地占我们用户群的 50%),则无法正常工作

我们联系了 Google 的 AdWords 帮助,看看我们是否可以手动将其提供gclid给 Analytics,他们的回答是

您应该聘请我们的一位顾问,他将弄清楚如何在您的网站上保留 URL 参数以使其正常工作,因为我们不支持手动设置gclidID

(可悲的是只有一个非常小的释义。)

Google-fu 在这方面让我一片空白——很多人在 Google 论坛上提问,但没有答案。

4

2 回答 2

1

我不知道一切是如何设置的,但是 Backbone 可能没有将带有参数的 URL 视为匹配项,或者它知道的路由。实际上,您可以通过执行以下操作来测试...

unless Backbone.history.start(pushState: true)
  window.location = someDefaultURL;

如果您只想要一种简单的方法来匹配路由与参数,这里有两种方法可以做到。

class MyRouter extends Backbone.Router
  routes:
    'test?*params': 'test'
    'testTwo?gclid=:gclid': 'testTwo'

  test: (params) ->
    console.log 'test route', params

  testTwo: (gclid) ->
    console.log 'test route two', gclid
于 2012-11-20T19:48:36.797 回答
0

所以这里的问题是我立即使用该navigate方法将条目推送到历史对象中。

这会(正确地)覆盖当前 URL 并且不保留 URL 参数(尽管如果可以的话会很好,我想这是我应该提出的拉取请求)。

通过不navigate立即调用,这允许 URL 参数在 URL 中停留足够长的时间以供 GA 看到它。

于 2012-11-20T20:52:15.543 回答