我在 Google 跟踪代码管理器中收到以下错误消息:
Erro na linha 3, caractere 13:此语言功能仅支持 ECMASCRIPT6 模式或更好:const 声明。
Erro na linha 3, caractere 32:此语言功能仅支持 ECMASCRIPT6 模式或更好:箭头功能。
添加此 HTML 片段标签时
<script>
window.addEventListener("load", function () {
const URLToArray = url => {
var request = {};
var pairs = url.substring(url.indexOf('?') + 1).split('&');
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));
}
})
})
这正是错误消息所说的意思,即您不能在大多数 GTM 中使用 ES6 功能,例如 const 关键字或箭头函数(自定义模板支持某些 ES6 功能,这对您没有帮助,因为模板无法操作添加表单字段等的 DOM)
如果您更换,解决方案应该很简单
const URLToArray = url => {
// function body
}
与
var URLToArray = function() {
// function body
}
箭头函数表达式创建一个名为 url 的函数,然后将其分配给一个变量(它是一个常量,这意味着变量名称不能重新分配)。
更传统的方法是将匿名函数直接分配给变量(并且之后可能会意外覆盖它)。
您可以只使用转换器,例如https://jstool.gitlab.io/babel-es6-to-es5/