【发布时间】:2020-10-13 08:46:26
【问题描述】:
我正在尝试将 cookie 从我的父页面发送到 iframe。
这是我的 postMessage 代码:
<script>
try {
var postObject = JSON.stringify({
event: 'DOMPageLoad',
data: '{{Page URL}}'
});
parent.postMessage(postObject, 'https://mysite/l/839063/2020-02-26/29bh');
} catch(e) {
window.console && window.console.log(e);
}
</script>
我尝试从 iframe 到父级使用它,它就像一个魅力,但我无法让它以相反的方式工作。
这是我的事件监听器代码:
<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>
我的假设是问题与我尝试将消息发送到 iframe 的方式有关。现在我正在使用parent.postMessage,但我认为 iframe 需要有所不同。
这可能很简单,但我对 javascript 很陌生,根本不知道我不知道什么。
【问题讨论】:
标签: javascript cookies iframe google-tag-manager