window.postMessage()是否适用于不同服务器上的不同应用程序?

时间:2016-09-26 09:27:34

标签: javascript ibm-cloud

所以,我有一个在Bluemix上运行的应用程序(比如说是route is- myapp1.mybluemix.net) 我有第二个应用程序(路线 - myapp2.mybluemix.net) 现在我想通过

发送消息

postMessage(" Hello"," http://myapp2.mybluemix.net")来自myapp1.mybluemix.net。

如果我在一只耳朵中同时使用这两个应用程序或打包服务器并将其部署在Bluemix上。我能够做到这一点。但不是使用不同的应用程序。

我不了解这种行为。请帮忙。 遵循App1的代码 -

<script>  
 function Menu() {
     var child = window.open("http://myapp2.mybluemix.net/page2.jsp",'name',width=200,height=200);
   child.onload=function(){
    child.postMessage('hellow','http://myapp2.mybluemix.net/');
    }
  };
  </script>
  <input type="button" value="Try it" onclick="Menu()"/>

对于App2(http://myapp2.mybluemix.net/page2.jsp)-

<script type="text/javascript">
function listenMessage(msg) {
alert(msg.data);
 }
 window.addEventListener("message", listenMessage, false);

</script>
<p id="message">This is an Example!</p>

1 个答案:

答案 0 :(得分:0)

你误解了这个问题。

postMessage代码本身没问题。它不起作用,因为你从来没有打电话。

无法在原点检测到load事件。

让应用2听取自己的load事件,并使用window.opener.postMessage在应用1准备就绪时向其宣布。