iFrame window.postMessage-数据始终为空字符串

时间:2020-03-21 06:18:47

标签: javascript postmessage

我正在尝试在我的角度应用程序中将消息发布到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运行,因此浏览器可能拒绝发送数据...

1 个答案:

答案 0 :(得分:0)

您的数据在加载 iframe 之前总是为空的,只需在加载您的 iframe 后发送数据

authIFrame.addEventListener('load',()=>{
    //your code paste  here
})
相关问题