我正在使用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
没有的地方。任何进一步调试的建议将不胜感激。
答案 0 :(得分:0)
问题在于触发器需要等待dataLayer填充。有一个延迟执行的触发选项“设置最小屏幕持续时间”。通过将其设置为2000ms,现在总是使用dataLayer变量创建标记。