我可以将使用document.write()的第三方营销代码插入Google跟踪代码管理器(GTM)吗?

时间:2015-07-14 15:13:59

标签: javascript dom google-tag-manager

我正在将第三方营销代码安装到我的GTM(v2)容器中。标签是一个真正的麻烦,大量使用document.write。虽然Google跟踪代码管理器声称支持document.write,但这些代码在触发时会抛出javascript错误。这是一个这样的标签的例子。

<script src="http://ib.adnxs.com/seg?add=1958353,6039160&t=1" type="text/javascript">
</script>

此脚本seg?add=1958353,6039160&t=1继续拨打document.write两次:

document.write('<scr'+'ipt type="text/javascript" src="https://js.b1js.com/tagcontainer.js?id=110386891486949186&type=1"></scr'+'ipt>');
document.write('<scr' + 'ipt src="http://cdn.adnxs.com/ib/async_usersync.js"></scr'+'ipt>');

如果我要求GTM支持document.write此标记,并将标记设置为在所有页面上触发,我将在页面加载时出错:

Uncaught TypeError: Cannot read property 'parentNode' of null
Uncaught #<Object>

如果我取消选中此标记的GTM“支持document.write”,我会在控制台中将其作为警告:

  

无法在'Document'上执行'write':除非明确打开,否则无法从异步加载的外部脚本写入文档。

我已尝试将标签触发推迟到DOM Ready之后,这对我的另一个标签起作用,但不适用于此标签。

我至少有3个标签配置为以这种方式使用document.write,并且在触发时都会抛出相同的错误。请理解其他不依赖document.write的标记可以很好地工作。感谢您提供的任何帮助或建议。

1 个答案:

答案 0 :(得分:0)

不确定是否有帮助,但尝试将触发规则设置为gtm.load而不是DOM就绪。