GTM 中的错误:此语言功能仅支持 ECMASCRIPT_2015 模式或更好:const 声明

问题描述 投票:0回答:2

我正在尝试解析 UTM 并将它们放入字段中,但似乎我的脚本不会在 GTM 上发布。

(该脚本直接放在webflow自定义代码上即可运行)

  var queryString = window.location.search;
  console.log(queryString);
  // ?utm_source=facebook&utm_medium=post&utm_campaign=webflow
  var URLSearchParams_wb = new URLSearchParams(queryString);

  const utmParameters = [
    "utm_campaign", 
    "utm_source", 
    "utm_medium",
    "utm_content",
    "utm_term"
  ];

  for (const utm_element of utmParameters) {
    /* if utm_source exist */
    if(URLSearchParams_wb.has(utm_element)){
      console.log(utm_element + " : is exist");
      /* get UTM value of this utm param */
      var value = URLSearchParams_wb.get(utm_element)
      /* change form hidden feild to this utm url value */
      $("."+utm_element).val(value);
    }
  }/* end for loop */
</script>```

Any idea ?
javascript jquery google-tag-manager utm
2个回答
0
投票

是的,GTM 在采用 ES6 时遇到了麻烦。 因此:

  1. 摆脱常量。使用 var 代替。
  2. 那个 jquery 片段。最好也摆脱它。您不需要依赖 GTM 中的 jquery。但它不会破坏代码。
  3. 您的 for 构造也来自 es6,我相信:https://kangax.github.io/compat-table/es6/ 因此循环可能需要重写为不同的东西。我只会使用 forEach 而不是 for of。

其余的应该都不错。尝试一下。


0
投票

只需使用 ECMA6/ECMA5 转换器,例如 https://jstool.gitlab.io/babel-es6-to-es5/

© www.soinside.com 2019 - 2024. All rights reserved.