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

如何修改父窗口与iframe的window.postMessage()逻辑,仅在数据存在时发送消息

仅当model存在时发送postMessage响应

很简单,你只需要在原有的消息监听逻辑里,添加一个对model是否存在的判断,只有当它有效时才执行postMessage发送操作。

修改后的完整代码:

window.addEventListener('message', (event) => {
  if (hasOwnProperty.call(event.data, 'mounted')) {
    // 新增判断:确保model存在时才发送消息
    if (model) {
      $('iframe')[0].contentWindow.postMessage({ model }, '*');
    }
  }
});

关于判断逻辑的补充说明:

  • 上面的if (model)会自动过滤掉null、undefined、空字符串、0、false这些JavaScript里的“假值”。如果你的model可能是这些合法的有效值(比如数值0或者布尔值false),那你需要更精确的判断:
    // 仅排除undefined和null的情况
    if (model !== undefined && model !== null) {
      $('iframe')[0].contentWindow.postMessage({ model }, '*');
    }
    
  • 如果你还需要确保model是一个有实际内容的对象(不是空对象),可以再加一层检查:
    if (model && Object.keys(model).length > 0) {
      $('iframe')[0].contentWindow.postMessage({ model }, '*');
    }
    

另外提个小建议:尽量不要用'*'作为postMessage的目标origin,最好指定你的iframe所在的具体域名(比如'https://your-iframe-domain.com'),这样能避免消息被恶意页面拦截,提升安全性。

内容的提问来源于stack exchange,提问作者Michael Hays

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 12:11:46