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 开发版相同。似乎工作正常。我找不到有关该主题的其他信息。 顺便说一句,<head>
不是 <header>
,不过,你在正确的元素中拥有它 (<head>
)
【参考方案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 提供的答案 - 导致我执行以下操作:
-
导航到
<script async src="https://www.googletagmanager.com/gtag/js?id=Google Analytics Id here"></script>
标记中的 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