0

我正在使用react-gtm-module编写动态生成的数据层以响应自定义 HTML 标记。我有一个问题,有时 CustomHTML 标记会成功触发,并且会生成 dataLayer,但该<script type='application/ld+json'>元素缺少模板化的 dataLayer 变量。

它发生在开发和生产环境中,因此它不能与 webpack 相关。有时 gtm 调试器在失败的情况下显示带有空字段的标记,有时它显示填充在标记中的字段,即使写入的元素本身没有。

这是 CustomHTML 标记中的编写脚本:

var script = document.createElement('script');
  script.type = 'application/ld+json';
  script.innerHTML = JSON.stringify(data);
  document.getElementsByTagName('head')[0].appendChild(script);
})(document); 

下面是两个本质上等价的例子:

https://iiif.cloud/view/afa9ee3c-a7ed-5875-a009-2de3940ebff3

标签被写入application/ld+json元素。

和这里:

https://iiif.cloud/view/7145e94f-6a10-5bb6-a360-6915ee9b0795

不在的地方。任何有关进一步调试的建议将不胜感激。

4

1 回答 1

0

问题是触发器需要等待 dataLayer 被填充。有一个延迟执行的触发选项,“设置最小屏幕持续时间”。通过将此设置为 2000 毫秒,现在始终使用 dataLayer 变量创建标签。

于 2018-10-31T21:04:14.840 回答