在客户的捐赠页面(https://www.resurge.org/donate/)上,iframe的大小由iframeResizer管理,该iframeResizer会在多个事件上生成新消息。
与此同时,我正在从父级发送一条单独的消息,其中包含带有userId的Google Analytics(分析)对象。在0:02超时后发送此消息,以确保iframe已完全加载。
我的事件侦听器始终提取iframeResizer消息。发生这种情况时,我可以识别它和return
,但是如何确保iframe接收到我的.ga对象?
在父项上:
<script>
setTimeout(function(){
ga(function(tracker) {
var clientId = tracker.get('clientId');
var frameWindow = document.getElementById('my_iframe').contentWindow;
// change https://xyz.shoppingcart.com to match your iFrame domain
frameWindow.postMessage(clientId, 'https://app.etapestry.com');
});
}, 2000);
</script>
在iframe中:
<script>
window.addEventListener('message', function(event) {
// Ignores messages from untrusted domains.
if (event.origin != 'https://www.resurge.org') return;
// test for [iFrameSizer]
if (event.data.slice(0, 13) === '[iFrameSizer]')
return;
// This code never runs:
// Creates the tracker with the data from the parent page.
ga('create', 'UA-19540393-1', 'auto', {clientId: event.data});
// write data to log
console.log("iFrame Child Page -- ID Creator in addEventListener", event.data);
ga('send', 'pageview');
});
</script>