1

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

问题是当目标 url 是外部网站时,我的浏览器 (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(); }
}
4

2 回答 2

1

如果您打开一个跨越区域和完整性级别的窗口(例如,在中运行的 Intranet 页面打开在低运行的 Internet 页面;或在低运行的 Internet 站点打开在中等运行的受信任站点),这可能会发生。这与弹出窗口阻止程序无关。

于 2011-02-08T00:00:40.317 回答
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 制作的

于 2011-02-07T23:40:53.167 回答