You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

跨域父子窗口iframe使用postMessage通信时event属性undefined问题求助

解决跨域iframe postMessage通信中event.origin和消息内容undefined的问题

嘿,我一眼就看到你代码里的几个小问题,正是它们导致了event.origin和消息内容显示undefined的情况,咱们一步步来修正:

问题1:父窗口的消息内容有多余引号

你父窗口里的postMessage("sent'", "https://iframeURL.net")多了一个单引号,这会导致传递的消息变成'sent'(带引号),虽然这不是核心问题,但先修正它:

var otherFrame = document.getElementById("otherFrame").contentWindow;
otherFrame.postMessage("sent", "https://iframeURL.net");

问题2:子窗口的两个关键拼写/属性错误

你的子iframe代码里有两个致命错误:

  1. 拼写错误:把event.origin写成了event.orgin(少了一个i),这直接导致这个属性变成undefined;
  2. 属性使用错误:postMessage传递的消息内容是存在event.data里的,而不是event.message,后者根本不是该事件对象的标准属性。

修正后的子iframe代码:

function receiveMessage(event){
  if (event.origin !== "https://parentURL.com") return;
  console.log(event.origin + " " + event.data);
};
window.addEventListener("message", receiveMessage, false);

验证一下

现在再运行代码,你应该就能在控制台正确看到发送方的域名和传递的消息内容了。核心就是要注意postMessage事件对象的标准属性拼写和用法,别犯这种容易忽略的小错误~

内容的提问来源于stack exchange,提问作者Levi Villarreal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 07:38:38