我正在尝试在我的角度应用程序中将消息发布到iFrame。该消息将其发送到iFrame;但是,传递的数据始终在iFrame中作为空字符串接收。
为什么会有这种想法?
注意:这两个应用程序都在本地运行。
在我的有角度的应用程序中:
html :
<iframe id="authIFrame" src="http://127.0.0.1:9000"></iframe>
ts :
const wn = document.getElementById('authIFrame').contentWindow;
wn.postMessage({authToken: 'abcdefg'}, '*');
在iFrame中:
if (window.addEventListener) {
window.addEventListener('message', handleMessage, false);
} else if (window.attachEvent) {
window.attachEvent('onmessage', handleMessage());
}
function handleMessage(event) {
//HERE>>>> event.data is always "" (empty string)
const {data, origin, source} = event;
if (isOriginAllowed(origin)) {
const {method, accessToken, idToken, userData} = data;
if (method === 'SET') {
return setIdentityData(accessToken, idToken, userData);
} else if (method === 'GET') {
return getIdentityData();
}
}
}
我还尝试对传递给iFrame的数据进行字符串化处理。它没有帮助。
我唯一的猜测是,由于我的应用程序未通过https运行,因此浏览器可能拒绝发送数据...
答案 0 :(得分:0)
您的数据在加载 iframe 之前总是为空的,只需在加载您的 iframe 后发送数据
authIFrame.addEventListener('load',()=>{
//your code paste here
})