在Windows 10上使用默认设置的IE中,如果我从本地计算机上的页面或本地网络上的服务器对外部Internet站点执行window.open()
,则会得到null
。< / p>
请参阅下面的我的复制品。在Windows 7或Google Chrome上的IE中不会发生这种情况。
有趣的是,如果我打开Intranet区域的“启用保护模式”(以便Intranet区域和Internet区域中的保护模式相同),则问题就会消失。但是,我需要这个工作而不要求用户这样做。
我没有找到任何明确的Microsoft文档来解释这种行为。我在EdgeHTML问题网站上对此提出了https://www.crummy.com/software/BeautifulSoup/bs4/doc/,但想知道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>
答案 0 :(得分:2)
似乎保护模式不允许在当前域之外打开新窗口,因此您可以尝试使用空白页打开窗口并更新位置。
<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>