Javascript 当使用谷歌自定义搜索的覆盖布局时,谷歌分析不会收集任何搜索数据

Javascript 当使用谷歌自定义搜索的覆盖布局时,谷歌分析不会收集任何搜索数据,javascript,google-analytics,google-custom-search,Javascript,Google Analytics,Google Custom Search,我的网站上有一个谷歌自定义搜索元素,配置为使用“覆盖布局”: 我有一个Google Analytics配置文件连接到这个Google自定义搜索帐户,设置在相关部分,如下所示: <head> <!-- Your head tags, etc here --> <script type="text/javascript"> var gaq; var _gaq = gaq || []; _gaq.push(['_setAccount', 'UA-X

我的网站上有一个谷歌自定义搜索元素,配置为使用“覆盖布局”:

我有一个Google Analytics配置文件连接到这个Google自定义搜索帐户,设置在相关部分,如下所示:

<head>

<!-- Your head tags, etc here -->

<script type="text/javascript">
  var gaq;
  var _gaq = gaq || [];
  _gaq.push(['_setAccount', 'UA-XXXXXX-YY']);
  _gaq.push(['_setDomainName', 'yourdoamin.com']);
  _gaq.push(['_setAllowLinker', true]);
  _gaq.push(['_trackPageview']);

  (function() {
    var ga = document.createElement('script');
    ga.type = 'text/javascript';
    ga.async = true;
    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www')
                  + '.google-analytics.com/ga.js';
    var s = document.getElementsByTagName('script')[0];
    s.parentNode.insertBefore(ga, s);
  })();

</script>
</head>
<body>
<script>

var customUIBehaviours = function(){
    //your jQuery Post UI changes to the GCS box may come here
};

var renderSearchElement = function() {
    google.search.cse.element.render({
        div: 'gsd', 
        tag: 'search', 
        attributes:{
            linkTarget:'_self',
            gaQueryParameter: 'q',
            gaCategoryParameter:'',
            noResultsString:'No results.',
            enableAutoComplete: true
        }
    });

};

var myCallback = function() {
    if (document.readyState == 'complete') {
        renderSearchElement();
        customUIBehaviours();
    } else {
        google.setOnLoadCallback(function() {
            renderSearchElement();
            customUIBehaviours();
        });
    }
};

//this will make the GCS render by myCallback
window.__gcse = {
  parsetags: 'explicit',
  callback: myCallback
};


  (function() {
    var cx = 'YOUR GCS CODE HERE';
    var gcse = document.createElement('script');
    gcse.type = 'text/javascript';
    gcse.async = true;
    gcse.src = (document.location.protocol == 'https:' ? 'https:' : 'http:') +
        '//www.google.com/cse/cse.js?cx=' + cx;
    var s = document.getElementsByTagName('script')[0];
    s.parentNode.insertBefore(gcse, s);
  })();
</script>
<div id="gsd" class="gsce-searchBox"></div>
</body>

我使用默认的分析代码和谷歌提供的自定义搜索代码。 分析“站点搜索跟踪”在“报告视图设置”处打开,如下所示:

<head>

<!-- Your head tags, etc here -->

<script type="text/javascript">
  var gaq;
  var _gaq = gaq || [];
  _gaq.push(['_setAccount', 'UA-XXXXXX-YY']);
  _gaq.push(['_setDomainName', 'yourdoamin.com']);
  _gaq.push(['_setAllowLinker', true]);
  _gaq.push(['_trackPageview']);

  (function() {
    var ga = document.createElement('script');
    ga.type = 'text/javascript';
    ga.async = true;
    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www')
                  + '.google-analytics.com/ga.js';
    var s = document.getElementsByTagName('script')[0];
    s.parentNode.insertBefore(ga, s);
  })();

</script>
</head>
<body>
<script>

var customUIBehaviours = function(){
    //your jQuery Post UI changes to the GCS box may come here
};

var renderSearchElement = function() {
    google.search.cse.element.render({
        div: 'gsd', 
        tag: 'search', 
        attributes:{
            linkTarget:'_self',
            gaQueryParameter: 'q',
            gaCategoryParameter:'',
            noResultsString:'No results.',
            enableAutoComplete: true
        }
    });

};

var myCallback = function() {
    if (document.readyState == 'complete') {
        renderSearchElement();
        customUIBehaviours();
    } else {
        google.setOnLoadCallback(function() {
            renderSearchElement();
            customUIBehaviours();
        });
    }
};

//this will make the GCS render by myCallback
window.__gcse = {
  parsetags: 'explicit',
  callback: myCallback
};


  (function() {
    var cx = 'YOUR GCS CODE HERE';
    var gcse = document.createElement('script');
    gcse.type = 'text/javascript';
    gcse.async = true;
    gcse.src = (document.location.protocol == 'https:' ? 'https:' : 'http:') +
        '//www.google.com/cse/cse.js?cx=' + cx;
    var s = document.getElementsByTagName('script')[0];
    s.parentNode.insertBefore(gcse, s);
  })();
</script>
<div id="gsd" class="gsce-searchBox"></div>
</body>

问题: 分析没有收集任何网站搜索信息,即使是在几天后。 这个问题只有在我使用覆盖布局时才会发生。 当我使用一个单独的搜索结果页面时,查询正在收集中,因为分析正在记录结果页面请求

使用覆盖布局,搜索结果将显示在覆盖Div中,查询仅通过Google的自定义搜索API进行

问题: 如何确保Analytics获得关键字查询? 有我不见的电话吗? 还有什么我遗漏的吗?

解决方案: 咨询谷歌支持后,以下是解决方案:

  • 在管理控制台中设置GCS帐户@

  • 如上所述,在Analytics中设置站点搜索设置

  • 使用分析的异步跟踪代码(截至2014年5月,通用分析代码将不起作用)。把它放在结束标记之前。像这样:

    <head>
    
    <!-- Your head tags, etc here -->
    
    <script type="text/javascript">
      var gaq;
      var _gaq = gaq || [];
      _gaq.push(['_setAccount', 'UA-XXXXXX-YY']);
      _gaq.push(['_setDomainName', 'yourdoamin.com']);
      _gaq.push(['_setAllowLinker', true]);
      _gaq.push(['_trackPageview']);
    
      (function() {
        var ga = document.createElement('script');
        ga.type = 'text/javascript';
        ga.async = true;
        ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www')
                      + '.google-analytics.com/ga.js';
        var s = document.getElementsByTagName('script')[0];
        s.parentNode.insertBefore(ga, s);
      })();
    
    </script>
    </head>
    
    <body>
    <script>
    
    var customUIBehaviours = function(){
        //your jQuery Post UI changes to the GCS box may come here
    };
    
    var renderSearchElement = function() {
        google.search.cse.element.render({
            div: 'gsd', 
            tag: 'search', 
            attributes:{
                linkTarget:'_self',
                gaQueryParameter: 'q',
                gaCategoryParameter:'',
                noResultsString:'No results.',
                enableAutoComplete: true
            }
        });
    
    };
    
    var myCallback = function() {
        if (document.readyState == 'complete') {
            renderSearchElement();
            customUIBehaviours();
        } else {
            google.setOnLoadCallback(function() {
                renderSearchElement();
                customUIBehaviours();
            });
        }
    };
    
    //this will make the GCS render by myCallback
    window.__gcse = {
      parsetags: 'explicit',
      callback: myCallback
    };
    
    
      (function() {
        var cx = 'YOUR GCS CODE HERE';
        var gcse = document.createElement('script');
        gcse.type = 'text/javascript';
        gcse.async = true;
        gcse.src = (document.location.protocol == 'https:' ? 'https:' : 'http:') +
            '//www.google.com/cse/cse.js?cx=' + cx;
        var s = document.getElementsByTagName('script')[0];
        s.parentNode.insertBefore(gcse, s);
      })();
    </script>
    <div id="gsd" class="gsce-searchBox"></div>
    </body>
    
    
    var-gaq;
    var _gaq=gaq | |[];
    _gaq.push([''u setAccount',UA-XXXXXX-YY']);
    _gaq.push([''u setDomainName','yourdoamin.com']);
    _gaq.push([''设置Allowlinker',true]);
    _gaq.push([''u trackPageview']);
    (功能(){
    var ga=document.createElement('script');
    ga.type='text/javascript';
    ga.async=true;
    ga.src=('https:'==document.location.protocol?'https://ssl' : 'http://www')
    +“.google analytics.com/ga.js”;
    var s=document.getElementsByTagName('script')[0];
    s、 parentNode.insertBefore(ga,s);
    })();
    
  • 将您从管理控制台获得的GCS跟踪代码放入secion中

  • 使用“自定义回调”渲染搜索框以处理如下自定义属性:

    <head>
    
    <!-- Your head tags, etc here -->
    
    <script type="text/javascript">
      var gaq;
      var _gaq = gaq || [];
      _gaq.push(['_setAccount', 'UA-XXXXXX-YY']);
      _gaq.push(['_setDomainName', 'yourdoamin.com']);
      _gaq.push(['_setAllowLinker', true]);
      _gaq.push(['_trackPageview']);
    
      (function() {
        var ga = document.createElement('script');
        ga.type = 'text/javascript';
        ga.async = true;
        ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www')
                      + '.google-analytics.com/ga.js';
        var s = document.getElementsByTagName('script')[0];
        s.parentNode.insertBefore(ga, s);
      })();
    
    </script>
    </head>
    
    <body>
    <script>
    
    var customUIBehaviours = function(){
        //your jQuery Post UI changes to the GCS box may come here
    };
    
    var renderSearchElement = function() {
        google.search.cse.element.render({
            div: 'gsd', 
            tag: 'search', 
            attributes:{
                linkTarget:'_self',
                gaQueryParameter: 'q',
                gaCategoryParameter:'',
                noResultsString:'No results.',
                enableAutoComplete: true
            }
        });
    
    };
    
    var myCallback = function() {
        if (document.readyState == 'complete') {
            renderSearchElement();
            customUIBehaviours();
        } else {
            google.setOnLoadCallback(function() {
                renderSearchElement();
                customUIBehaviours();
            });
        }
    };
    
    //this will make the GCS render by myCallback
    window.__gcse = {
      parsetags: 'explicit',
      callback: myCallback
    };
    
    
      (function() {
        var cx = 'YOUR GCS CODE HERE';
        var gcse = document.createElement('script');
        gcse.type = 'text/javascript';
        gcse.async = true;
        gcse.src = (document.location.protocol == 'https:' ? 'https:' : 'http:') +
            '//www.google.com/cse/cse.js?cx=' + cx;
        var s = document.getElementsByTagName('script')[0];
        s.parentNode.insertBefore(gcse, s);
      })();
    </script>
    <div id="gsd" class="gsce-searchBox"></div>
    </body>
    
    
    var customuibehaviors=函数(){
    //您对GCS框的jQuery Post UI更改可能会出现在这里
    };
    var renderSearchElement=函数(){
    google.search.cse.element.render({
    部门:"政府物料供应处",
    标签:“搜索”,
    属性:{
    链接目标:“你自己”,
    gaQueryParameter:'q',
    gaCategoryParameter:“”,
    noResultsString:“没有结果。”,
    enableAutoComplete:正确
    }
    });
    };
    var myCallback=函数(){
    如果(document.readyState=='complete'){
    renderSearchElement();
    习惯行为();
    }否则{
    setOnLoadCallback(函数(){
    renderSearchElement();
    习惯行为();
    });
    }
    };
    //这将使GCS通过myCallback进行渲染
    窗口。\uuu gcse={
    parsetags:'显式',
    回调:myCallback
    };
    (功能(){
    var cx='您的地面军事系统代码在此';
    var gcse=document.createElement('script');
    gcse.type='text/javascript';
    gcse.async=true;
    gcse.src=(document.location.protocol=='https:'?'https:':'http:')+
    '//www.google.com/cse/cse.js?cx='+cx;
    var s=document.getElementsByTagName('script')[0];
    s、 parentNode.insertBefore(gcse,s);
    })();
    

有关GCS V2的更多信息可用@

您是否在查询参数字段中使用q?在覆盖模式下,google会查询自己的api,如下所示。。。“Google Analytics”页面中的“Query Parameter”设置为?to:q(尽管在屏幕截图中没有看到…)