您可以使用 addEventListener (javascript) 区分多个变量吗?

Posted

技术标签:

【中文标题】您可以使用 addEventListener (javascript) 区分多个变量吗?【英文标题】:Can you differentiate between multiple variables using an addEventListener (javascript)? 【发布时间】:2021-12-25 07:17:09 【问题描述】:

基本上,我想做这样的事情:

var a = 3;
var b = 4;
postMessage(a, '*');
postMessage(b, '*');

然后让听众做这样的事情:

addEventListener('message', event => 
sessionStorage.setItem("variable a",event.data=a);
sessionStorage.setItem("variable b",event.data=b);

);

显然 "event.data=a" 和 "event.data=b" 不是真正的代码,但我希望意思能传达...

谢谢!

【问题讨论】:

显式传递变量的名称,如果你关心的话。 @Bergi 这正是我真正想要做的......那么我如何通过 postMessage 显式传递变量的名称并在 addEventListener 中捕获它?在这里编程傻瓜......对不起...... postMessage(name: "a", value: a)。然后你可以console.log(`variable $event.data.name = $event.data.value`) 酷...我现在明白这是如何工作的了。我以前确实见过这样的东西,但没能抓住它的意义。感谢您的澄清。 【参考方案1】:

如果类型相同,但不是真的,有两个addEventListeners - 相反,考虑发布一个由ab 组成的object,并将字符串化的对象存储在存储中反而。这不仅可以解决您的问题,而且还是一种更易于管理和更优雅的方法。

postMessage( a, b , '*');

addEventListener('message', event => 
  sessionStorage.setItem('datas', JSON.stringify(event.data));
);

【讨论】:

这太棒了……谢谢!您的简单解决方案也让我意识到我可以发布一个数组,这也是我想完成的事情的一种方式。起初对我来说并不明显...... 当一个答案解决了您的问题时,您可以考虑投票和/或将其标记为已接受(选中左侧的复选框)以表明问题已解决:) 我投了赞成票,但没有足够的声望点来显示(抱歉)。我还没有“接受这个答案”,因为它没有明确回答我的问题,即使它非常有用。我认为上面 cmets 中的@Bergi 更接近地抓住了我问题的本质。最终,我想定义 var a = 3;在 iframe 中并将所有这些信息传递给父窗口(即“a = 3”),最好不需要在父窗口中设置新变量。不确定这是否可能。我想这不是我所说的 sessionStorage 位...... 我还想在浏览器选项卡中跨网页传输“a = 3”。例如设置变量 a = 3;在 iframe 中,将该信息发送到其父窗口,然后在我单击同一浏览器选项卡中的另一个页面时保留该信息,以便我可以在该新页面中使用“a = 3”。它在我的脑海中可能比在纸上更有意义......对不起 我还应该补充一点,我需要对同一 iframe 中的多个变量执行此操作,并在进入新页面之前更新父窗口中这些变量的值,因为它们在 iframe 中发生变化。

以上是关于您可以使用 addEventListener (javascript) 区分多个变量吗?的主要内容,如果未能解决你的问题,请参考以下文章

无法读取未定义的属性“addEventListener”[关闭]

如何使用 addEventListener(webkitTransitionEnd) 在 window.close() 之前延迟?

js addeventlistener 为 dragenter 使用捕获不适用于输入元素

使用 addeventlistener 处理另一个类文件

attachEvent和addEventListener

如何在游戏循环中使用 addEventListener