【发布时间】: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>
任何帮助将不胜感激..
【问题讨论】:
-
@davidkonrad:请查看我对这个问题的更新。如果您对此有任何想法,请告诉我。
-
"我看到不同浏览器中的文档模式不同" 在我看来,您需要强制各种 MS 浏览器进入单一标准化模式,即
<meta http-equiv="x-ua-compatible" content="IE=Edge"/>或类似的。 -
您解决了这个问题吗?不过我也遇到了同样的问题。
标签: javascript html cross-domain postmessage