Firefox上的Google Analytics JS代码中的“返回语句后无法访问的代码”错误 - 这是我的错吗?

时间:2018-04-28 19:40:24

标签: debugging google-analytics google-tag-manager developer-tools

我正在使用当前的Google Analytics跟踪代码,而在Firefox 59上,我在控制台中收到此错误:

  

返回语句后无法访问的代码

在这个javascript上:https://www.googletagmanager.com/gtag/js?id=UA-my-tracking-code:formatted

由于这个问题似乎不是可谷歌的,因此似乎其他人没有这个问题,我的猜测是我做错了什么。但这可能是什么?

我将代码段放在<head>中,就像文档说的那样:

<!DOCTYPE html>
<html>
    <head>
        <title>some title</title>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">

        <!-- Global site tag (gtag.js) - Google Analytics -->
        <script async src="https://www.googletagmanager.com/gtag/js?id=UA-my-tracking-code"></script>

        <script>
          window.dataLayer = window.dataLayer || [];
          function gtag(){dataLayer.push(arguments);}
          gtag('js', new Date());
          gtag('config', 'UA-my-tracking-code');
        </script>

    </head>
    <body>
     blah blah 
    </body>
</html>

3 个答案:

答案 0 :(得分:12)

这不是您的错。如果您使用Firefox修饰代码,可以在以下位置找到

Gc = function (a, b, c) {
  var d = a.split('.');
  var e = function (a, b) {
    for (var c = 0; void 0 !== a && c < d.length; c++) {
      if (null === a) return !1;
      a = a[d[c]]
    }
    return void 0 !== a || 1 < c ? a : b.length ? e(Hc(b.pop()), b)  : Ic(d)
  };
  return e(Cc.eventModel, [         // <= True return value
    b,
    c
  ]);
  return Ic(d)  // <= This can never be reached!
},

要美化代码:

  1. 单击警告的蓝色链接。您会看到乱码。
  2. 单击该面板左下方带有{}的图标以进行美化。但是,引用将丢失。
  3. 返回“控制台”面板,然后再次单击同一警告的蓝色链接。现在,您将在正确的行中看到原始参考。

Firefox正确地指出了该错误,由于该函数更早返回,因此将永远无法访问函数Ic(d)。似乎是Google跟踪代码管理器的错误,但是,如果不检查原始代码,我们就无法判断其严重程度。

答案 1 :(得分:3)

我的OCD不会这样做。警告和我的大脑错误一样严重...大声笑

@Me提供的答案-使我执行以下操作:

  1. 导航至<script async src="https://www.googletagmanager.com/gtag/js?id={Google Analytics Id here}"></script>标签中的网址,并获取JavaScript的副本。
  2. 将其拖放到我的解决方案中的文件中,并用此新的本地副本替换远程js src。
  3. 重新格式化文件(整理)。
  4. 注释掉违规行(如果无法按原样达成,那么我不希望仅仅删除它就会造成严重的危害)。

警告消失了,到目前为止,一切似乎都可以正常工作-控制台中没有其他或新的错误/警告,而且Analytics /分析数据仍未通过。

这显然不是一个理想的解决方案-我将不得不继续监视它,直到以下情况之一:a)Google修复了他们的代码(顺便说一句,它忽略了整个分号-我怀疑它是否接近通过Linter )或b)Google对代码进行了其他更改,导致我的代码损坏或我的Google Analytics(分析)停止报告。

答案 2 :(得分:2)

并非所有版本的跟踪代码都会出现此问题。

gtag

此代码段使用gtag会引起unreachable code after return statement警告(在Firefox中):

<script async src="https://www.googletagmanager.com/gtag/js?id=UA-XXXXXX-YY"></script>
<script>
    window.dataLayer = window.dataLayer || [];
    function gtag(){dataLayer.push(arguments);}
    gtag('js', new Date());

    gtag('config', 'UA-XXXXXX-YY');
</script>

来源:Google Analytics(分析)中的“管理”部分:Admin › Tracking Info › Tracking Code,上次更新是上帝知道的时间。

analytics.js

使用analytics.js的以下代码段不会触发错误:

<script>
window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)};ga.l=+new Date;
ga('create', 'UA-XXXXXX-YY', 'auto');
ga('send', 'pageview');
</script>
<script async src='https://www.google-analytics.com/analytics.js'></script>

摘自官方文档: Adding analytics.js to Your Site (第二个代码示例),“最新更新于2018年7月30日。”

请记住要使用您自己的媒体资源ID更新XXXXXX-YY


有什么区别?

在“管理”部分:

  

全局站点标记(gtag.js)和Google跟踪代码管理器是新实施的推荐跟踪方法。其他实现选项也可用,包括analytics.js和Measurement Protocol。详细了解其他跟踪方法。

From the documentation

  

使用analytics.js

     

对于新的实现,建议使用gtag.js库跟踪代码。但是,在某些情况下,您可能更喜欢使用analytics.js(例如,您的网站已经在使用analytics.js。)请参阅开发者文档以获取更多信息。