2011-02-07 76 views
1

我已阅读了很多关于javascript代码检测弹出窗口阻止程序的帖子,但仍然无法找到我现在遇到的问题的答案。弹出窗口阻止程序IE8和安全区域

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

回答

1

如果您打开跨区域和完整性级别的窗口(例如Intranet页面runn在中媒体打开互联网页面运行在低位;或在低位运行的Internet站点打开在中等运行的可信站点)可能会发生这种情况。这与弹出式窗口拦截器无关。

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制作

相关问题