React中使用iframe进行跨页面通讯

论坛 期权论坛 编程之家     
选择匿名的用户   2021-6-2 15:51   3636   0

我们使用React时经常当作spa使用,页面之间的传值可以通过react-router或sessionStorage,但是总会存在一两个比较特殊的需求。

其中跨页面传值就是比较常见的需求了,接下来我们来浅谈一下iframe的传值过程。

iframe是前端WEB端常用的页面镶嵌标签,可以实现嵌入其他页面当如子元素使用。APP端和小程序端有类似的标签webview,使用起来类似。

父页面向iframe传值:

iframe存在一个src属性,类似于图片的src,支持传入某个网站的地址,可携带参数。父页面向iframe传值基于src链接拼接的参数实现。

<iframe
    allowFullScreen={true}
    scrolling={'no'}
    src="https://www.baidu.com/s?wd=iframe"
/>

iframe向父页面传值

如果页面被当作iframe嵌入的时候,可以使用window.parent.postMessage进行发消息,父页面监听来自子页面的message,然后在回调中处理业务。

iframe页面:

window.parent && window.parent.postMessage({ type: 'unfull' }, '*');

父页面:

window.addEventListener('message', this.handleIframePostMessage)
function handleIframePostMessage(event)
{
  if (event.origin !== "http://example.org:8080")
    return;
}

页面中监听message是很不安全的,如果必要的情况下使用,请指定origin为自己的默认允许的域名。

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:3875789
帖子:775174
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP