web-dev-qa-db-ja.com

FirefoxのGoogle Analytics JSコードの「returnステートメントの後の到達不能コード」エラー-これは私のせいですか?

現在のGoogleアナリティクストラッキングコードを使用していますが、Firefox 59ではコンソールにこのエラーが表示されます。

returnステートメントの後の到達不能コード

この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>
24
konrados

notあなたのせいです。 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タグマネージャーのバグのように見えますが、元のコードを検査しないと重大度を知ることができません。

12
Me -

私のOCDはこれを許可しません。警告は私の脳のエラーと同じくらい悪い...笑

@Meによって提供された答え-私は次のことを実行しました。

  1. <script async src="https://www.googletagmanager.com/gtag/js?id={Google Analytics Id here}"></script>タグ内のURLに移動し、JavaScriptのコピーを取得します。
  2. それを私のソリューションのファイルにドロップし、リモートjs srcをこの新しいローカルコピーに置き換えます。
  3. ファイルを再フォーマットします(プリティファイ)。
  4. 問題のある行をコメントアウトします(そのまま到達できない場合は、単に削除するだけではひどい害はないと思います)。

警告はなくなりました。これまでのところ、すべてが機能しているようです。コンソールや分析/追跡データに追加または新しいエラー/警告は表示されていません。

これは明らかに理想的な解決策ではありません-a)Googleがコードを修正するまで(これは偶然セミコロンを省略します-Linterを通過するのではないかと思われるまで)、b )Googleがコードに他の変更を加えると、私のコードが壊れたり、Analyticsがレポートを停止したりします。

3

この問題は、トラッキングコードのすべてのバージョンで発生するわけではありません。

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アナリティクスの管理セクション: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>

公式ドキュメントから取得:サイトにanalytics.jsを追加(2番目のコードサンプル)、「2018年7月30日最終更新」

必ず更新してくださいXXXXXX-YY独自のプロパティID。


違いは何ですか?

管理セクションから:

グローバルサイトタグ(gtag.js)とGoogleタグマネージャーは、新しい実装に推奨される追跡方法です。 analytics.jsやMeasurement Protocolなど、追加の実装オプションも利用できます。追加の追跡方法の詳細をご覧ください。

ドキュメントから

Analytics.jsを使用する

Gtag.jsライブラリは、新しい実装に推奨されるトラッキングコードです。ただし、analytics.jsを使用したい場合もあります(たとえば、サイトで既にanalytics.jsを使用している場合など)。詳細については、開発者向けドキュメントをご覧ください。

2