小编fa8*_*823的帖子

window.postMessage 在代码执行之前等待响应

我试图使示例更简单,实际上我的问题是在更复杂的上下文中。我有一个包含 iframe (child.htm) 的 html 页面 (parent.htm)。html 页面和 iframe 位于不同的域中,因此我使用 window.postMessage 进行相互通信。

这是parent.htm的代码:

<html>
    <head>
        <script>
            if (window.addEventListener){
                window.addEventListener("message",getMessage,false);
            } else if (window.XMLHttpRequest){
                window.attachEvent("onmessage",getMessage);
            }

            function getMessage(event){
                if(event.data=="getCity"){
                    window.myIframe.postMessage("London","*");
                }
            }

        </script>
    </head>
    <body>
        <div style="height:100%;width:100%">
            <iframe name="myIframe" src="child.htm"></iframe>
        </div>      
  </body>
</html>
Run Code Online (Sandbox Code Playgroud)

以及child.htm的代码

<html>
    <head>
        <script>
            if (window.addEventListener){
                window.addEventListener("message",getValue,false);
            } else if (window.XMLHttpRequest){
                window.attachEvent("onmessage",getValue);
            }

            var returnValue="";

            function getValue(event){
                returnValue=event.data;
            }

            function getCityFromTop(){
                top.postMessage("getCity","*"); 
                return returnValue;
            }
        </script>
    </head>     
    <body>
        <a href="javascript:alert(getCityFromTop())">Get city from top</a>
        <br/>
        <a href="javascript:alert(returnValue)">Show city after …
Run Code Online (Sandbox Code Playgroud)

javascript asynchronous postmessage synchronous

6
推荐指数
0
解决办法
4842
查看次数