Блокировщик всплывающих окон IE8 и зоны безопасности

Я прочитал много сообщений об обнаружении блокировщика всплывающих окон по коду javascript, но так и не смог найти ответ на проблему, с которой я столкнулся сейчас.

Проблема в том, что когда целевой URL-адрес является внешним веб-сайтом, мой браузер (IE8) запрещает доступ к объекту окна, или, другими словами, код JavaScript window.open() возвращает ноль, хотя всплывающее окно разрешено открывать. Напротив, для локальной страницы сайта javascript возвращает объект окна.

Таким образом, кажется, что где-то в настройках Интернета есть настройки безопасности, которые не позволяют захватить обработчик открытого окна; в этом случае кто-нибудь знает, как обнаружить его с помощью JavaScript?

Код, который я использую, выглядит следующим образом, и он не может обнаружить эту ситуацию:

var popup = window.open("http://www.externalsite.com&param1=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 не созданный Ником

Другие вопросы по тегам