Блокировщик всплывающих окон IE8 и зоны безопасности - PullRequest
1 голос
/ 08 февраля 2011

Я прочитал много сообщений об обнаружении блокировщика всплывающих окон по коду 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 ]

1 голос
/ 08 февраля 2011

Если вы откроете окно, которое пересекает уровни зон и целостности (например, страница интрасети, работающая на среднем уровне, открывает страницу интернета, работающую на низком уровне, или сайт Интернета, работающий на низком уровне, открывает доверенный сайт, работающий на среднем уровне), это может произойти. Это не имеет ничего общего с блокировщиком всплывающих окон.

1 голос
/ 08 февраля 2011

Следующий код работает, когда я тестировал его в 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, созданный Ником

...