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

JavaScript中如何通过addEventListener区分postMessage传递的多个变量

解决方案

方案1:发送端传递带标识的结构化数据(推荐)

核心思路:发送消息时不要只传递纯数值,额外附带变量标识,接收端通过标识区分不同变量,是稳定性最高的实现方式。

发送端修改后代码:

var a = 3;
var b = 4;
// 传递带变量标识的结构化对象
postMessage({
  storageKey: 'variable a',
  value: a
}, '*');
postMessage({
  storageKey: 'variable b',
  value: b
}, '*');

接收端代码:

addEventListener('message', event => {
  // 直接用消息自带的存储key写入sessionStorage
  sessionStorage.setItem(event.data.storageKey, event.data.value);
});

方案2:无法修改发送端代码时的兜底方案(不推荐)

仅适用于发送顺序固定(先发a、后发b)的场景,存在顺序错乱就存错数据的风险,仅做临时兼容参考。

// 计数器记录消息接收顺序
let receiveCount = 0;
addEventListener('message', event => {
  receiveCount += 1;
  if (receiveCount === 1) {
    sessionStorage.setItem("variable a", event.data);
  } else if (receiveCount === 2) {
    sessionStorage.setItem("variable b", event.data);
  }
});

内容的提问来源于stack exchange,提问作者Pat D.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 01:54:08