#google-tag-manager
#google-tag-manager
Вопрос:
Я получаю следующее сообщение об ошибке в диспетчере тегов Google:
Ошибка na linha 3, глава 13: эта языковая функция поддерживается только для режима ECMASCRIPT6 или лучше: объявление const.
Ошибка на linha 3, карактер 32: Эта языковая функция поддерживается только для режима ECMASCRIPT6 или лучше: функция стрелки.
при добавлении этого тега фрагмента HTML
<script>
window.addEventListener("load", function () {
const URLToArray = url => {
var request = {};
var pairs = url.substring(url.indexOf('?') 1).split('amp;');
for (var i = 0; i < pairs.length; i ) {
if (!pairs[i])
continue;a
var pair = pairs[i].split('=');
request[decodeURIComponent(pair[0])] = decodeURIComponent(pair[1]);
}
return request;
}
$(document).on("submit", "form", function (ev) {
var params = URLToArray(window.location.href)
if (params) {
$('<input>').attr({
type: 'hidden',
name: 'field[2]',
value: params['utm_source']
}).appendTo($(this));
$('<input>').attr({
type: 'hidden',
name: 'field[3]',
value: params['utm_medium']
}).appendTo($(this));
$('<input>').attr({
type: 'hidden',
name: 'field[4]',
value: params['utm_campaign']
}).appendTo($(this));
$('<input>').attr({
type: 'hidden',
name: 'field[5]',
value: params['utm_term']
}).appendTo($(this));
$('<input>').attr({
type: 'hidden',
name: 'field[6]',
value: params['utm_content']
}).appendTo($(this));
}
})
})
Ответ №1:
Это означает именно то, что говорится в сообщении об ошибке, а именно, что вы не можете использовать функции ES6, такие как ключевое слово const или функции стрелок в большинстве GTM (некоторые функции ES6 поддерживаются в пользовательских шаблонах, что здесь не поможет, поскольку шаблоны не могут манипулировать DOM для добавления поля формы и т. Д.).
Решение должно быть достаточно простым, если вы замените
const URLToArray = url => {
// function body
}
с
var URLToArray = function() {
// function body
}
Выражение функции со стрелкой создает функцию с именем url, которая затем присваивается переменной (и это константа, что означает, что имя переменной нельзя переназначить).
Более традиционный подход присваивает анонимную функцию непосредственно переменной (и впоследствии ее можно случайно перезаписать).