2011-02-07 88 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製作

相關問題