gpt4 book ai didi

javascript - IE11是否支持window.postMessage()

转载 作者:可可西里 更新时间:2023-11-01 13:48:43 29 4
gpt4 key购买 nike

我正在使用 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>

任何帮助将不胜感激..

最佳答案

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

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

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

关于javascript - IE11是否支持window.postMessage(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37934876/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com