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

Posted

技术标签:

【中文标题】Firefox 上的 Google Analytics JS 代码中的“返回语句后代码无法访问”错误 - 这是我的错吗?【英文标题】:"unreachable code after return statement" error in Google Analytics JS code on Firefox - is this my fault? 【发布时间】:2018-10-09 08:40:58 【问题描述】:

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

return 语句后无法访问的代码

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

由于这个问题似乎无法通过谷歌搜索,因此其他人似乎没有这个问题,我猜是我做错了什么。但这可能是什么?

我将 sn-p 放入 <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>

【问题讨论】:

我也是这样,你找到解决办法了吗? 这里同样说 Firefox 60.0.1。 Chrome 是沉默的 :) 与 Firefox 60.0.2 相同的警告 相当痛苦。完全同意 Konrados (+1) 与 FF 60.0b2 开发版相同。似乎工作正常。我找不到有关该主题的其他信息。 顺便说一句,&lt;head&gt; 不是 &lt;header&gt;,不过,你在正确的元素中拥有它 (&lt;head&gt;) 【参考方案1】:

不是你的错。如果您使用 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!
,

美化代码:

    单击警告的蓝色链接。您会看到乱码。 单击该面板左下方带有 的图标以美化它。但是参考将丢失。 返回“控制台”面板并再次单击同一警告的蓝色链接。现在您将在正确的行中看到原始参考。

Firefox 正确地指出了这个错误,函数Ic(d) 将永远不会被访问,因为该函数更早地返回。看起来像是 Google 跟踪代码管理器的错误,但如果不检查原始代码,我们无法判断严重程度。

【讨论】:

谢谢。是的,我最终也找到了这个特定的原因,尽管这并不能解决手头的问题:) 然而,你做了你的分析,看来这是我们能做的最好的事情(除了可能向谷歌报告错误),所以我将此标记为答案。再次感谢! 我认为您只是对我的答案投了赞成票,但并未将其标记为“答案”。那就是绿色的复选标记“✓”。 这方面有什么更新吗?直到现在,我仍然在控制台中收到此错误。 不是真的 @JAT86... 随时在 Google 官方频道上报告此错误。【参考方案2】:

我的强迫症不会让这种情况发生。警告对我的大脑来说就像错误一样糟糕......哈哈

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

    导航到 &lt;script async src="https://www.googletagmanager.com/gtag/js?id=Google Analytics Id here"&gt;&lt;/script&gt; 标记中的 url 并获取 JavaScript 的副本。 将它放到我的解决方案中的一个文件中,并用这个新的本地副本替换远程 js src。 重新格式化文件(美化)。 注释掉有问题的行(如果不能按原样到达,我不认为简单地删除它会造成严重的伤害)。

警告消失了,到目前为止一切似乎都在工作 - 控制台中没有其他或新的错误/警告,分析/跟踪数据似乎仍在通过。

这显然不是一个理想的解决方案 - 我将不得不继续监控它,直到 a) Google 修复他们的代码(顺便说一下,它完全省略了分号 - 我怀疑它会接近通过 Linter ) 或 b) Google 对代码进行了其他更改,导致我的代码中断或我的 Analytics 停止报告。

【讨论】:

我更害怕后者发生。 @Brandito 我同意 - 但有问题的文件的第一行是// Copyright 2012 Google Inc. All rights reserved. ...所以我不会屏住呼吸等待谷歌解决这个问题。我现在在 Angular SPA 上有这个,它需要一些额外的代码来跟踪页面更改 - 但正如我所说,现在一切都在跟踪并且工作正常。干杯!【参考方案3】:

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

gtag

此代码 sn-p,使用 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

这段代码sn-p,使用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。)有关更多信息,请参阅开发者文档。

【讨论】:

以上是关于Firefox 上的 Google Analytics JS 代码中的“返回语句后代码无法访问”错误 - 这是我的错吗?的主要内容,如果未能解决你的问题,请参考以下文章

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

Google Hangouts支持使用Firefox WebRTC

删除 Google Chrome 上的输入焦点

播放服务升级到 7.5 后的 Google 分析问题

Phonegap 和 Google Analytics 不起作用

Google HTML 5 Geolocation“使用我的位置”仅适用于 Firefox