我已经阅读了很多关于通过javascript代码检测弹出窗口拦截器的帖子,但仍然无法找到我现在遇到的问题的答案。
问题是当目标网址是外部网站时,我的浏览器(IE8)阻止访问窗口对象,或者换句话说,javascript代码window.open()返回null,尽管允许弹出窗口打开。相反,对于站点的本地页面,javascript返回窗口对象。
因此,似乎Internet选项中的某处存在安全设置,无法抓取打开窗口的处理程序;在这种情况下,有没有人知道如何用javascript检测它?
我使用的代码如下,无法检测到这种情况:
var popup = window.open("http://www.externalsite.com¶m1=value1", "_blank", "");
if (!popup) {
alert('Cannot preview this page because pop-ups are blocked by your browser');
} else {
if (popup != null) { popup.focus(); }
}
答案 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站点),则可能会发生这种情况。这与弹出窗口阻止程序无关。