我有一些动态值,我只在body标签内。现在,当我尝试使用“script”标记使用dataLayer对象推送这些值并将其添加到head部分时,它不起作用。
这是代码 -
<script type="text/javascript">
var head = document.getElementsByTagName('head')[0];
var JS = document.createElement('script');
<!-- Google Tag Manager -->
var tagManagerSnippet = '(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({"gtm.start":\n' +
'new Date().getTime(),event:"gtm.js"});var f=d.getElementsByTagName(s)[0],\n' +
'j=d.createElement(s),dl=l!="dataLayer"?"&l="+l:"";j.async=false;j.src=\n' +
'"https://www.googletagmanager.com/gtm.js?id="+i+dl;f.parentNode.insertBefore(j,f);\n' +
'})(window,document,"script","dataLayer","GTM-XXXXXXXX");\n';
<!-- End Google Tag Manager -->
JS.text = tagManagerSnippet;
head.prepend(JS);
var code = 'dataLayer = [];\n' +
'dataLayer.push({"eventLabel" : "Interested in Science"});\n' +
'dataLayer.push({"eventLabel" : "Interested in IT"});\n';
JS.text = code;
head.prepend(JS);
</script>
我可以看到上面的代码正确执行并将JS附加到head部分。但是,标签不会触发。当我简单地将上面的代码放在头部(而不是动态)时,它会按预期运行。