window.open() 如果打开,则在 IE11 中返回 null



在具有默认设置的 Windows 10 上的 IE 中,如果我从本地计算机上的页面或本地网络上的服务器对外部 Internet 站点执行window.open(),我会null

请参阅下面的重现。这不会发生在Windows 7或Google Chrome上的IE中。

有趣的是,如果我为内联网区域打开"启用保护模式"(以便内联网区域和互联网区域中的保护模式相同(,那么问题就会消失。但是,我需要它才能工作,而无需用户执行此操作。

我还没有找到任何明确的Microsoft文档来解释这种行为。我在 EdgeHTML 问题网站上提出了一个问题,但想看看 SO 上的社区是否对为什么会发生这种情况有任何见解。

谢谢!

<!DOCTYPE HTML>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<script>
var popupWindow = null;
function openWindow() {
popupWindow = window.open('http://microsoft.com', '_blank', 'left=100;top=100;height=100;width=100');
}
function checkWindowStatus() {
if (popupWindow) {
document.getElementById('status').innerHTML += '- Truthy reference. Closed? ' + popupWindow.closed + '</br>';
} else {
document.getElementById('status').innerHTML += '- Falsy reference: ' + popupWindow + '</br>';
}
}
</script>
</head>
<body>
<h2>Popup Issue</h2>
<button onclick="openWindow()">Open Window</button>
<button onclick="checkWindowStatus()">Check Window Status</button>
<button onclick="popupWindow.close()">Close Window</button>
<p id="status"></p>
</body>
</html>

似乎保护模式不允许在当前域之外打开新窗口,因此您可以尝试在更新位置后打开空白页面的窗口。

<script>
var popupWindow = null;
function openWindow() {
popupWindow = window.open('', '_blank', 'left=100;top=100;height=100;width=100');
popupWindow.location = 'http://microsoft.com';
}
function checkWindowStatus() {
if (popupWindow) {
document.getElementById('status').innerHTML += '- Truthy reference. Closed? ' + popupWindow.closed + '</br>';
} else {
document.getElementById('status').innerHTML += '- Falsy reference: ' + popupWindow + '</br>';
}
}
</script>

相关内容

最新更新