Блокировщик всплывающих окон IE8 и зоны безопасности
Я прочитал много сообщений об обнаружении блокировщика всплывающих окон по коду javascript, но так и не смог найти ответ на проблему, с которой я столкнулся сейчас.
Проблема в том, что когда целевой URL-адрес является внешним веб-сайтом, мой браузер (IE8) запрещает доступ к объекту окна, или, другими словами, код JavaScript window.open() возвращает ноль, хотя всплывающее окно разрешено открывать. Напротив, для локальной страницы сайта javascript возвращает объект окна.
Таким образом, кажется, что где-то в настройках Интернета есть настройки безопасности, которые не позволяют захватить обработчик открытого окна; в этом случае кто-нибудь знает, как обнаружить его с помощью JavaScript?
Код, который я использую, выглядит следующим образом, и он не может обнаружить эту ситуацию:
var popup = window.open("http://www.externalsite.com¶m1=value1", "_blank", "");
if (!popup) {
alert('Cannot preview this page because pop-ups are blocked by your browser');
} else {
if (popup != null) { popup.focus(); }
}
2 ответа
Это может произойти, если вы откроете окно, которое пересекает уровни зон и целостности (например, страница интрасети, работающая на среднем уровне, открывает страницу интернета, работающую на низком уровне; Это не имеет ничего общего с блокировщиком всплывающих окон.
Следующий код работает, когда я тестировал его в IE8
function detectPopupBlocker() {
var test = window.open(null,"","width=100,height=100");
try {
test.close();
alert("Pop-ups not blocked.");
} catch (e) {
alert("Pop-ups blocked.");
}
}
// Created by: Simon Willison
// http://simon.incutio.com/archive/2004/05/26/addLoadEvent
function addLoadEvent(func) {
var oldonload = window.onload;
if (typeof window.onload != 'function') {
window.onload = func;
} else {
window.onload = function() {
if (oldonload) {
oldonload();
}
func();
}
}
}
addLoadEvent(detectPopupBlocker);
Код, найденный на http://javascript.internet.com/snippets/popup-blocker-detection-2.html не созданный Ником