如何检查javacript天气是否启用了Internet Explorer 11弹出窗口阻止程序? 我使用下面的代码来检测弹出窗口阻止程序。它在chrome中工作正常但在 Internetnternet explorer 11
中没有var newWindow = open('/', 'example', 'width=300,height=300')
if (newWindow===null || typeof(newWindow)==="undefined" || newWindow === false || newWindow ==="" || newWindow===0) {
alert("popup blocker enabled");
}
答案 0 :(得分:0)
我能想到的唯一可靠的方法是将您打开的窗口作为测试调用通过其opener
属性返回主窗口。您弹出的页面中将包含以下脚本代码:
if (opener) {
opener.poppedUp();
}
您的检测代码将遵循这些方针:
function openWithPopupDetection(options) {
var newWindow = open(options.url, options.name, options.features);
if (!newWindow) {
// Chrome and similar, it didn't pop up
setTimeout(options.callback, 0, false);
} else {
var popTimer = setTimeout(function() {
// Give up on the popup...
window.poppedUp = null;
options.callback(false);
}, AnAppropriateNumberOfMilliseconds);
window.poppedUp = function() {
// Popped up, clear the timer
clearTimeout(popTimer);
window.poppedUp = null;
options.callback(true);
};
}
}
然后你会像这样使用它:
openWithPopupDetection({
url: 'page.html',
name: 'example',
features: 'width=300,height=300',
callback: function(flag) {
if (!flag) {
alert(/*...*/);
}
}
});
请注意,检测必然是异步的。由于它有时是异步的,请注意上面的内容始终是异步的。
(如果你可能有多个重叠调用,你需要对poppedUp
函数的名称进行一些管理,每次都可能生成名称并将其作为查询传递参数。)