#javascript #google-tag-manager
Вопрос:
Я пытаюсь добавить следующий код в GTM для измерения жизненно важных показателей веб-ядра
<script type="text/javascript">
new PerformanceObserver((entryList) => {
for (const entry of entrytList.getEntries()) {
const elm = entry.element;
console.log(elm);
}
}).observe({type: 'largest-contentful-paint', buffered:true});
</script>
Этот код работает в консоли, но когда я пытаюсь опубликовать его в GTM, он выдает сообщение об ошибке, как показано ниже
Не уверен, что не так с кодом, так как он должен поддерживать ECMA16 для GTM
Комментарии:
1. Всегда полезный Симо Ахава создал пользовательский шаблон для измерения webvitals в GTM ( simoahava.com/custom-templates/core-web-vitals ) плюс сопроводительная статья об отслеживании веб-показателей в GA4 ( simoahava.com/analytics/… ), так что, возможно, это полезно в качестве альтернативы вашему собственному пользовательскому сценарию.
Ответ №1:
Да, GTM довольно медленный, когда дело доходит до внедрения ES6. Он частично перенял его для таких вещей, как шаблоны, но даже там не полностью. И, очевидно, он не использовал его для пользовательских html-тегов.
Что вам нужно будет сделать, так это переписать свой код, чтобы он соответствовал стандарту ES5. Или вы можете использовать babel для автоматического перехода. это будет выглядеть так:
new PerformanceObserver(function (entryList) {
var _iteratorNormalCompletion = true;
var _didIteratorError = false;
var _iteratorError = undefined;
try {
for (var _iterator = entrytList.getEntries()[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
var entry = _step.value;
var elm = entry.element;
console.log(elm);
}
} catch (err) {
_didIteratorError = true;
_iteratorError = err;
} finally {
try {
if (!_iteratorNormalCompletion amp;amp; _iterator.return) {
_iterator.return();
}
} finally {
if (_didIteratorError) {
throw _iteratorError;
}
}
}
}).observe({ type: 'largest-contentful-paint', buffered: true });
Вам, вероятно, не нужны все попытки поймать и, наконец, но бабель честен с тем, что он делает.
Комментарии:
1. @Bnazruk, я уже преобразовал код в ECS5, но, похоже, он не работает… вот почему мне было интересно, что может быть не так.Команда Google поделилась фрагментом кода в одном из видео..
2. Возможно, они использовали его для таких вещей, как пользовательские шаблоны.
3. @BNazaruk это, вероятно, не предназначено для использования в GTM, поскольку пользовательские шаблоны не допускают ключевое слово «новый».