В IE в Windows 10 с настройками по умолчанию, если я выполняю window.open()
для внешнего интернет-сайта со страницы на моем локальном компьютере или на сервере в моей локальной сети, я получаю null
.
Смотрите мою репродукцию ниже. Этого не происходит в IE в Windows 7 или Google Chrome.
Интересно, что если я включу «Включить защищенный режим» для зоны интрасети (чтобы защищенный режим был одинаковым для зоны интрасети и зоны Интернета), проблема исчезла. Однако мне нужно, чтобы это работало, не требуя от пользователей этого.
Я не нашел какой-либо четкой документации Microsoft, объясняющей такое поведение. Я поднял вопрос по этому поводу, связанный с проблемами EdgeHTML. site, но хотел узнать, есть ли у сообщества 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>