弹出窗口拦截器IE8和安全区域

时间:2011-02-07 23:36:05

标签: javascript security url internet-explorer-8 popup-blocker

我已经阅读了很多关于通过javascript代码检测弹出窗口拦截器的帖子,但仍然无法找到我现在遇到的问题的答案。

问题是当目标网址是外部网站时,我的浏览器(IE8)阻止访问窗口对象,或者换句话说,javascript代码window.open()返回null,尽管允许弹出窗口打开。相反,对于站点的本地页面,javascript返回窗口对象。

因此,似乎Internet选项中的某处存在安全设置,无法抓取打开窗口的处理程序;在这种情况下,有没有人知道如何用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 个答案:

答案 0 :(得分:1)

以下代码在我在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上的代码不是由Nick提出的

答案 1 :(得分:1)

如果您打开一个跨越区域和完整性级别的窗口(例如,在Medium运行的Intranet页面打开运行在低位的Internet页面;或者运行在Low的Internet站点打开在介质上运行的Trusted站点),则可能会发生这种情况。这与弹出窗口阻止程序无关。