Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.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
Backbone.js 使用主干路由器跟踪站点上的adwords性能_Backbone.js_Google Analytics_Google Ads Api - Fatal编程技术网

Backbone.js 使用主干路由器跟踪站点上的adwords性能

Backbone.js 使用主干路由器跟踪站点上的adwords性能,backbone.js,google-analytics,google-ads-api,Backbone.js,Google Analytics,Google Ads Api,因此,我们刚刚重新启动了我们的网站,作为一个以主干网为动力的单页应用程序,但我们在跟踪从AdWords广告到Google Analytics网站的转换过程中花了很多时间 问题在于,为了让Google Analytics跟踪用户来自AdWords的事实,它在URL中查找名为gclid的URL查询参数: http://test.com/?gclid=(Q#kjsdf0INKJSDJF9 但是,当来自主干网的路由器初始化时,它会从URL中删除所有查询参数,因此当跟踪事件触发时,它看不到用户来自AdW

因此,我们刚刚重新启动了我们的网站,作为一个以主干网为动力的单页应用程序,但我们在跟踪从AdWords广告到Google Analytics网站的转换过程中花了很多时间

问题在于,为了让Google Analytics跟踪用户来自AdWords的事实,它在URL中查找名为
gclid
的URL查询参数:

http://test.com/?gclid=(Q#kjsdf0INKJSDJF9
但是,当来自主干网的路由器初始化时,它会从URL中删除所有查询参数,因此当跟踪事件触发时,它看不到用户来自AdWords广告

我们尝试将用户发送到一个间隙页面,该页面加载分析代码并等待事件触发,然后将其转发到站点,但是

  • 它很难看,给用户显示了一段时间的空白页面
  • 如果没有对IE8用户(占我们用户群的50%)的大量等待,就无法正常工作
  • 我们联系了谷歌的AdWords帮助,看看我们是否可以手动将
    gclid
    提交给Analytics,他们的答案是

    您应该雇佣我们的一位顾问,他将研究如何在您的网站上保留URL参数,使其正常工作,因为我们不支持手动设置
    gclid
    ID

    (遗憾的是,这只是一个很小的解释。)


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

    我不知道一切都是如何设置的,但主干网可能没有将带有参数的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
    

    我不知道一切是如何设置的,但主干网可能并没有将带有参数的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
    

    因此,这里的问题是,我立即使用
    navigate
    方法将一个条目推入历史对象

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


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

    因此,这里的问题是,我使用
    navigate
    方法立即将一个条目推入历史对象

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


    通过不立即调用
    导航
    ,这允许URL参数在URL中停留足够长的时间,以便G.A.能够看到它。

    问题不是获取URL查询参数,而是将它们保留在URL中。由于Google Analytics是异步的,我无法控制它何时触发跟踪事件,所以它们需要在事件触发之前一直存在。啊,好吧,哎呀。对不起,一开始我没听清楚那个部分。不,你说得对。我有一部分是个白痴。使用路径调用
    导航
    时,URL参数将消失。所以我需要让它附加查询参数来导航(如果存在)。但是,在IE.FUN中,要使查询参数位于哈希之前!那我不确定,对不起。对我来说,在本地和主干网进行一些测试并不会从URL中删除查询参数。是的,只是在调试器中逐步完成整个事务并查看URL。啊。谢谢问题不是获取URL查询参数,而是将它们保留在URL中。由于Google Analytics是异步的,我无法控制它何时触发跟踪事件,所以它们需要在事件触发之前一直存在。啊,好吧,哎呀。对不起,一开始我没听清楚那个部分。不,你说得对。我有一部分是个白痴。使用路径调用
    导航
    时,URL参数将消失。所以我需要让它附加查询参数来导航(如果存在)。但是,在IE.FUN中,要使查询参数位于哈希之前!那我不确定,对不起。对我来说,在本地和主干网进行一些测试并不会从URL中删除查询参数。是的,只是在调试器中逐步完成整个事务并查看URL。啊。谢谢