Is there a good way to determine if a person has a popup blocker enabled? I need to maintain a web application that unfortunately has tons of popups throughout it and I need to check if the user has popup blockers enabled.
The only way I've found to do this is to open a window from javascript, check to see if it's open to determine if a blocker is enabled and then close it right away.
This is slightly annoying since users who do not have it enabled see a small flash on the screen as the window opens and closes right away.
Are there any other non-obtrusive methods for acplishing this?
Is there a good way to determine if a person has a popup blocker enabled? I need to maintain a web application that unfortunately has tons of popups throughout it and I need to check if the user has popup blockers enabled.
The only way I've found to do this is to open a window from javascript, check to see if it's open to determine if a blocker is enabled and then close it right away.
This is slightly annoying since users who do not have it enabled see a small flash on the screen as the window opens and closes right away.
Are there any other non-obtrusive methods for acplishing this?
Share Improve this question edited Oct 30, 2008 at 13:50 swilliams 48.9k27 gold badges102 silver badges130 bronze badges asked Oct 30, 2008 at 13:44 Chris ConwayChris Conway 16.5k24 gold badges98 silver badges113 bronze badges 1- Alternative hacky way is to check for '[native code]' was suggested in stackoverflow./questions/26094333/… – Michael Freidgeim Commented Feb 20, 2021 at 22:59
5 Answers
Reset to default 8Read 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()
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 mented, 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.