首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将gtm id动态传递到head部分中的gtm脚本

将gtm id动态传递到head部分中的gtm脚本
EN

Stack Overflow用户
提问于 2019-05-24 01:30:23
回答 1查看 563关注 0票数 0

我已经在我的react js应用程序中集成了google标签管理器,但问题是我必须动态地传递gtm脚本中存在的gtm id,并根据来自API的值的响应动态地打开和关闭datalyer。

我已经创建了一个组件LoadAppKeys,它接收一个值,我根据该值来决定是否启用gtm。但是,如果值是1而不是0,我如何将gtm动态地传递给index.html的head部分中存在的脚本,并将脚本附加到head中。

代码语言:javascript
复制
class LoadAppKeys extends React.PureComponent {

  componentDidMount() {
    this.props.getStorefrontConfigs();
  }

  componentWillReceiveProps(nextProps) {
      if (!nextProps.loading) {
       const gtm = getGTM(nextProps.storefrontConfig);
         if (R.equals(gtm.gtm_enabled, 1)) {
            var script = document.createElement('script');
               script.type = "text/javascript";
               script.text = myGTM(window, document, 'script', 'dataLayer', "GTM-KQZGSBW");
            document.head.appendChild(script);
         }
   }
  }

-------------------------------------

    function myGTM(w, d, s, l, i) {
        (function (w, d, s, l, i) {
          w[l] = w[l] || []; w[l].push({
            'gtm.start':
              new Date().getTime(), event: 'gtm.js'
          }); var f = d.getElementsByTagName(s)[0],
            j = d.createElement(s), dl = l != 'dataLayer' ? '&l=' + l : ''; j.async = true; j.src =
              'https://www.googletagmanager.com/gtm.js?id=' + i + dl; f.parentNode.insertBefore(j, f);
        })(window, document, 'script', 'dataLayer', gtm_id);
      }

我要加载的脚本每次页面的基础上的值在loadAppKeys组件。

EN

回答 1

Stack Overflow用户

发布于 2019-06-26 21:30:44

您可以直接调用myGTM,而不是执行整个脚本插入。否则,如果要执行插入,只需确定src属性,例如:

script src = 'https://www.googletagmanager.com/gtm.js?id='+id

在这里,你没有提到如何获得id,但基本上是用你的变量来改变id。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56280297

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档