项目里报表是通过iframe嵌入的,报表的筛选条件是通过报表外面通过get请求传参传入,网上说postMessage是解决跨域问题要用的,那是不是可以无脑用postMessage?目前我们直接拼接地址参数也可以实现效果。
项目里报表是通过iframe嵌入的,报表的筛选条件是通过报表外面通过get请求传参传入,网上说postMessage是解决跨域问题要用的,那是不是可以无脑用postMessage?目前我们直接拼接地址参数也可以实现效果。
window.postMessage()
方法是为了解决跨域网页间的通讯而引入的,它可以实现两个网页间的双向通信,目前在主流浏览器上已经得到了良好支持。
你的需求是可以通过此方法来实现的,不过要求改造已有的两个页面的代码,这要求你有权限修改这两个页面。此外,需要注意 postMessage()
如果使用不当,可能有安全问题,最常见的是没有检查消息的 origin
和 source
属性。
最近刚好做了一个使用 <iframe>
postMessage
的功能,是一个网站迁移域名,希望新域名可以继续使用老域名的数据(存在 localStorage 里)。
于是乎,我们要这样做:
postMessage
方法,把 localStorage
传出来localStorage
10 回答11.1k 阅读
6 回答3k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3k 阅读✓ 已解决
2 回答2.6k 阅读✓ 已解决
3 回答5.1k 阅读✓ 已解决
3 回答1.8k 阅读✓ 已解决
视业务场景,如果你的
筛选条件
是不可变的用拼接地址(querystring)方式就不错,但如果在上层页面中可以修改这个筛选条件
那postMessage
更合适。postMessage
相当于网页间建立了一个通信管道,可以网页间数据交互
(上层页面中修改了筛选条件,可以使用
postMessage
通知iframe
变更)querystring
一次性设置,不具备“交互”能力