Ошибка "ошибка недоступного кода после возврата" в JS-коде Google Analytics на Firefox - это моя ошибка?

Я использую текущий код отслеживания Google Analytics, и в Firefox 59 я получаю эту ошибку в консоли:

недоступный код после оператора возврата

Об этом JavaScript: https://www.googletagmanager.com/gtag/js?id=UA-my-tracking-code:formatted

Так как эта проблема, похоже, не подходит для Google, следовательно, кажется, что другие не имеют этой проблемы, я думаю, что это я, кто-то делает что-то не так. Но что это может быть?

Я помещаю фрагмент в <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>

Ответы

Ответ 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!
},

Чтобы отменить код:

  1. Нажмите на синюю ссылку предупреждения. Вы увидите искаженный код.
  2. Нажмите на значок с {} в левом нижнем углу этой панели, чтобы отменить его. Однако ссылка будет потеряна.
  3. Вернитесь на панель "Консоль" и снова нажмите на ту же самую синюю ссылку. Теперь вы увидите исходную ссылку в правильной строке.

Firefox правильно указывает на ошибку, функция Ic(d) никогда не будет достигнута, так как функция вернется раньше. Кажется, ошибка диспетчера тегов Google, однако без проверки исходного кода мы не можем определить степень серьезности.

Ответ 2

Мой OCD этого не позволит. Предупреждения так же плохи, как ошибки в моем мозгу... lol

Ответ, предоставленный @Me, заставил меня выполнить следующее:

  1. Перейдите к URL-адресу в <script async src="https://www.googletagmanager.com/gtag/js?id={Google Analytics Id here}"></script> и возьмите копию JavaScript.
  2. Переместите его в файл в моем решении и замените удаленный js src на эту новую локальную копию.
  3. Переформатируйте файл (prettify).
  4. Прокомментируйте оскорбительную линию (если она не может быть достигнута как есть, я не ожидаю, что ужасный вред исходит от простого ее удаления).

Предупреждение исчезло, и пока все работает, никаких дополнительных или новых ошибок/предупреждений в консоли и данных Analytics/Tracking по-прежнему не происходит.

Это явно не идеальное решение - мне нужно будет продолжать следить за этим, пока a) Google не исправляет свой код (который, кстати, опускает полуколоны на всем протяжении), я сомневаюсь, что он приблизился к передаче Linter) или b ) Google вносит другие изменения в код, в результате чего мой разрыв или моя Analytics прекращают предоставлять отчет.

Ответ 3

Эта проблема возникает не со всеми версиями кода отслеживания.

GTAG

Этот фрагмент кода, использующий gtag, вызывает unreachable code after return statement предупреждений 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>

Взято из официальной документации: Добавление analytics.js на ваш сайт (второй пример кода), "Последнее обновление - 30 июля 2018 года".

Не забудьте обновить XXXXXX-YY своим собственным идентификатором собственности.


Какие есть отличия?

Из раздела администратора:

Глобальный тег сайта (gtag.js) и Google Tag Manager - рекомендуемые методы отслеживания для новых реализаций. Также доступны дополнительные варианты реализации, в том числе analytics.js и Протокол измерений. Узнайте больше о дополнительных методах отслеживания.

Из документации:

Используйте analytics.js

Библиотека gtag.js является рекомендуемым кодом отслеживания для новых реализаций. Однако могут быть случаи, когда вы предпочитаете использовать analytics.js (например, ваш сайт уже использует analytics.js.) Дополнительные сведения см. В документации для разработчиков.