【发布时间】:2021-12-01 22:49:43
【问题描述】:
我在子 google 标记管理器帐户中有一个脚本,该脚本在提交通过 javascript 生成的 iframe 表单时触发,这应该通过父 google 标记管理器帐户通过 dataLayer 获取。我正在关注本教程:https://measureschool.com/iframe-tracking/
但是它不会进入父级的 dataLayer - 因此标签不会触发。有人可以帮忙吗?
确认
子标签管理器帐户在以下位置触发:https://new.bokuntest.com/ - iframe 表单 URL
父标签管理器帐户在以下位置触发:https://bokun.io/
嵌入 iframe 表单的页面 URL:https://bokun.io/copy-of-free-trial
在孩子中触发 postMessage 标记:
<script>
try {
var postObject = JSON.stringify({
event: 'iframeFormSubmit',
form: 'Registration'
});
parent.postMessage(postObject, 'https://new.bokuntest.com');
} catch(e) {
window.console && window.console.log(e);
}
</script>
父级上的侦听器标记(触发器 = 在所有页面上触发):
<script type="text/javascript">
(function(window) {
addEvent(window, 'message', function(message) {
try{
var data = JSON.parse(message.data);
var dataLayer = window.dataLayer || (window.dataLayer = []);
if (data.event) {
dataLayer.push({
'event': data.event,
'postMessageData': data
});
}
}catch(e){}
});
// Cross-browser event listener
function addEvent(el, evt, fn) {
if (el.addEventListener) {
el.addEventListener(evt, fn);
} else if (el.attachEvent) {
el.attachEvent('on' + evt, function(evt) {
fn.call(el, evt);
});
} else if (typeof el['on' + evt] === 'undefined' || el['on' + evt] === null) {
el['on' + evt] = function(evt) {
fn.call(el, evt);
};
}
}
})(window);
</script>
在父级上触发(这似乎没有发生):
父表单提交标签:
谁能弄清楚我错过了什么?
【问题讨论】:
标签: javascript html forms iframe google-tag-manager