Popup detection before user logs in

假如想象 提交于 2019-12-04 06:18:54
Andre Bossard

Read Detect a popup blocker using Javascript:

Basically you check if the 'window.open' method returns a handle to a newly-opened window.

Looks like this:

var mine = window.open('','','width=1,height=1,left=0,top=0,scrollbars=no');
if(mine)
    var popUpsBlocked = false
else
    var popUpsBlocked = true
mine.close()
Jonny Buchanan

As others have said, you'll have to try it and see, but checking for the resulting window object being non-"falsy" isn't sufficient for all browsers.

Opera still returns a Window object when a popup is blocked, so you have to examine the object sufficiently to determine if it's a real window:

var popup = window.open(/* ... */);
var popupBlocked = (!popup || typeof popup.document.getElementById == "undefined");

As others have commented, the only way to find out for sure is to try it.

However, a good approximate answer to the question “is a popup-blocker installed” is, these days, “yes”. All recent browsers will block your pop-ups by default, so you'd better design your app to cope gracefully with this. Namely, don't try to window.open except in reaction to a user interaction (typically onclick), and you'll be fine.

I don't think there is any way of detecting this without attempting to open a window, as popup blockers don't add anything that can be interrogated in JS.

Popups that are opened in response to an action by a user—such as clicking a link—shouldn't be blocked by popup blockers.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!