【问题标题】:Does IE11 support window.postMessage()IE11 是否支持 window.postMessage()
【发布时间】:2016-10-22 10:31:15
【问题描述】:

我正在使用 window.postMessage 进行跨域弹出通信。一切似乎在 Firefox 和 chrome 上运行良好。主要问题在于IE11。 我在多个系统 IE11 上进行了测试,少数系统工作正常,但对于其他系统,它似乎没有在父页面上监听消息。

由于我们所有人(测试者)都在同一个网络下,我们拥有相同版本的 IE。 确切版本:11.0.9600.18314CO。自从过去 2 天以来,这非常令人沮丧。

更新:

我看到不同浏览器中的文档模式不同。在我的浏览器上,网站加载了 EDGE,一切正常。在其他一些系统中,它以 IE7 模式加载,这会导致问题。

现在我不知道为什么对于同一个网站,不同系统 IE 上的文档模式是不同的。

这是一个例子: http://plnkr.co/edit/pK4XBJDrqFrE7awvMlZj?p=preview

Page 1: 
<!DOCTYPE html>
<html>
<head>
  <script>
    var popup = window.open("popup.html", "popup", "width=200,height=200");
    function receiveMessage(event) {
      if (event.origin === "http://run.plnkr.co") {
        console.log(event, event.data);
        this.location.href = event.data;
      }
    }
    window.addEventListener("message", receiveMessage, false);
  </script>
</head>
<body>
</body>
</html>

Page 2:
<!DOCTYPE html>
<html>
<head>
</head>
<body>
  <form>
    <input type="button" value="Save">
  </form>
    <script>
    console.log(window.opener);
    var button = document.querySelector("form input[type=button]");
    button.onclick = function(e) {
      e.preventDefault();
      e.stopPropagation();
      window.opener.postMessage("redirect.html"
                    , window.opener.location.href);
      window.close();
    }
    </script>
</body>
</html>

Page 3:

<!doctype html>
<html xmlns='http://www.w3.org/1999/xhtml'>
<head>
<meta charset='utf-8' />
<style type='text/css'></style>


</head>
<body>
redirected
</body>
</html>

任何帮助将不胜感激..

【问题讨论】:

标签: javascript html cross-domain postmessage


【解决方案1】:

我有相同的条件 - 跨域弹出窗口对话框和非常相似的代码,在 IE11 中也不起作用(旧版本与我无关)。 就我而言,我发现由于 Internet Explorer 安全区域,它不起作用。

我的打开页面在受信任的站点中,对话页面不在。发现如果两个站点具有相同的区域(受信任或互联网),它就可以工作。

根据我的测试,在我看来,您的代码由于window.opener.location.href 而无法工作。可能您无法访问开窗器属性。如果我将其更改为特定域,它就会开始工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-11-10
    • 2020-12-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-09
    • 1970-01-01
    相关资源
    最近更新 更多