繁体   English   中英

GTM JavaScript 编译器错误 ECMASCRIPT6

[英]GTM JavaScript Compiler Error ECMASCRIPT6

我的问题是关于我使用 JavaScript 将一些表单数据从 Webflow 发送到 Typeform。 当我在 Google Tagmanager 中创建 custom-html 标记时,我收到此错误:

JavaScript 编译器错误类型标签
第 3 行,字符 1 处的错误:此语言功能仅支持 ECMASCRIPT6 或更好的模式:const 声明。

第 4、5、6、13、14、15 行也会出现同样的错误。

这是我的代码:

 <script> $( "#formbutton" ).click(function() { const naam = $('#Naam-2').val(); const email = $('#Email-2').val(); const postcode = $('#Postcode-2').val(); Cookies.set('naam', naam, { expires: 30 } ); Cookies.set('email', email, { expires: 30 } ); Cookies.set('postcode', postcode, { expires: 30 } ); }); var Webflow = Webflow || []; Webflow.push(function() { const naam = Cookies.get("naam"); const email = Cookies.get("email"); const postcode = Cookies.get("postcode"); $('#naam').val(naam); $('#email').val(email); $('#postcode').val(postcode); }); </script>

请分享您的想法或任何建议,将不胜感激。 - 提前谢谢你

constlet是声明仅在 ES6(JavaScript 的一个版本)或更高版本中可用的变量的不同方式。 Google Tag Manager 不支持 ES6,因为我今天在使用箭头函数的另一个 ES6 特性时发现。

在您的情况下,将const关键字或let任何实例更改为关键字var可能会解决您的问题。

我看到您的实际问题是 cookie 同意,但如果有人在 GTM 中遇到 ES6 或 Ecmascript 6 错误。 在线搜索 ES6 功能以使用 ES5 进行替换。 其他首字母缩略词是 ES2016 与 ES2015。 不要问我命名约定,因为它非常令人困惑。

另一个技巧是将您的代码粘贴到 BabelJS 的在线版本中,然后查看当您使用 ES2015 复选框时它会输出什么。 BabelJS 是一个转译器/编译器,它采用未来的语法 JS 并将其转换为旧版本的语法。 比如看吐出来的前后代码:

原始 ES6 代码(使用箭头函数、const 和 let):

window.addEventListener("load", (event) => {
  const myVariable = "text";
  let anotherVariable = 8;
});

从 BabelJS 输出到 ES2015/ES5:

window.addEventListener("load", function (event) {
  var myVariable = "text";
  var anotherVariable = 8;
});

我将 es6 代码转换为旧版本的 js vanilla试试这个工具:

https://es6console.com/

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM