Failed to execute ‘postMessage‘ on ‘DOMWindow‘:
要做的是两个跨域页面传输传大量的数据,由于url有长度限制,所以拼接的方式行不通,后来查到可以用postmessage来做:
<iframe
id="myIframe"
style="display: none"
:src="ifSrc"
frameborder="0"
></iframe>
在页面中添加一个iframe标签并隐藏,这里src为为另一个项目的地址;
我最开始想的是,src不能写死,后期肯定会变的,所以就用变量,
后俩就遇到了问题
Failed to execute ‘postMessage’ on ‘DOMWindow’: The target origin provided (‘http://192.168.2.28:83’) does not match the recipient window’s origin (‘http://127.0.0.1:8082’).
这个问题的原因是,我使用postMessage时候,iframe页面还未创建,
我的写法为:
ifSrc: "", // iframe 地址
-----------------------------------------------------------
var myIframe = document.querySelector("#myIframe");
if (myIframe) {
that.ifSrc='http://192.168.2.28:83/CreateScenario'
var data = { value, id: that.scenarioId, name };
myIframe.contentWindow.postMessage(
JSON.stringify(data),
`${ that.ifSrc}`
);
解决方案有两种,
其一为,提前赋予iframe src具体值,使页面创建
其二为,给代码加一个延时
setTimeout(() => {
myIframe.contentWindow.postMessage(
JSON.stringify(data),
`${ that.ifSrc}`
);
}, 500);
我的选择是,方法一, 提前赋予src,
ifSrc: "http://192.168.2.28:83/CreateScenario", // iframe 地址
---------------------------------------------------------
if (myIframe) {
var data = { value, id: that.scenarioId, name };
setTimeout(() => {
myIframe.contentWindow.postMessage(
JSON.stringify(data),
`${ that.ifSrc}`
);
}, 500);
window.open(`${ that.ifSrc}`);
}
后面如果地址有变动的话,也可直接修改,没有其他影响
附上 两个跨域页面进行跳转传参的终极方案
https://www.jianshu.com/p/6be6c3f2867a
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhghafhg
系列文章
更多
同类精品
更多
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01 -
怎样阻止微信小程序自动打开
PHP中文网 06-13