无法将子“localhost”窗口中的postMessage()用于Edge中的Intranet主机窗口

时间:2017-07-28 19:47:40

标签: javascript html html5 microsoft-edge

我有两个网页 - 主持人和儿童(见下文)。主机网页托管在我本地网络上的服务器上。子页面托管在我的计算机上。 Host页面在window.open()调用中使用“localhost”打开子页面。然后,子页面使用window.postMessage()方法将消息发回主机页面。

在IE和Chrome中,postMessage()从“localhost”页面工作到另一台服务器上托管的页面。在Edge中,它不起作用。甚至在主页上都没有触发“message”事件。

现在,如果我将Host页面放在不在我本地网络上的服务器上,则postMessage()方法可以正常工作并触发“message”事件。 IE有一个内联网与互联网站点的概念,我想知道Edge是否有相同的概念,除了没有办法配置它。

我在这里做错了什么或者从“localhost”页面到主页的消息是什么?

谢谢!

主机页面(托管在我网络上的其他服务器上):     

<html lang="en" xmlns="http://www.w3.org/1999/xhtml">

<head>
    <meta charset="utf-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <title>Post Message Test</title>
    <script>
        function setup() {
            window.addEventListener('message', function (event) {
                var messagesEl = document.getElementById("messages");
                messagesEl.innerHTML += "- Received message from " + event.origin + "<br/>";
            });
        }

        function openChildWindow() {
            window.open('http://localhost/sandbox/PostMessageTest_child/child.html', '_blank', 'left=100;top=100;width=100;height=100');
        }
    </script>
</head>

<body onload="setup()">
    <button onclick="openChildWindow()">Open Child Window</button>
    <p id="messages"></p>
</body>

</html>

子页面(在localhost上托管的child.html):     

<html lang="en" xmlns="http://www.w3.org/1999/xhtml">

<head>
    <meta charset="utf-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <script>
        function postMessage() {
            window.opener.postMessage("Test Message", "*");
        }
    </script>
</head>

<body>
    <button onclick="postMessage()">Post Message</button>
</body>

</html>

0 个答案:

没有答案