首页 > 解决方案 > 从一个页面发送一个函数并在另一个页面上运行它

问题描述

我可以访问本地主机上的两个页面。我要将函数发送到的页面位于我要从中发送函数的页面的框架中。postmessage 会起作用并在接收器/iframe 页面中设置事件侦听器吗?功能是:

 ipa.searchByString(query);

监听器语法:

ipa.addListener('query', myAppEventHandler);
};

标签: javascriptdom-events

解决方案


是的,您可以将函数作为字符串从一个页面发送到另一个页面,但是如果该函数依赖于其他函数变量,那将无法正常工作。通常,我认为您不希望在这里。而是将处理程序传播到消息传递通道:

 ipa.addListener('query', function proxy(data) {
   iframe.postMessage({ name: "ipa", data });
 });

然后在另一页接收它:

 window.onmessage = e => {
   const { name, data } = e.data;
   if(name === "ipa") myAppEventHandler(data);
};

推荐阅读