5

This question has been raised many times on "How to check if the popup is blocked on my browser or not" and all the solutions that i found have proposed a solution where a new popup window is opened for testing.

References:

  1. "Detect blocked popup in Chrome"

  2. "How can I detect if a browser is blocking a popup?"

etc.

I would like to know if there is any possibility of knowing a blocked popup, without actually opening one.

Because due to many reasons the test pop up may take time to close, which looks ugly on start-page of your application.

For example if we could use anything from the request header from the client, to know the popup preferences etc like we can get for the language preferences.

It'll be a huge help. Thanks

Community
  • 1
  • 1
nexus
  • 172
  • 2
  • 15
  • Work around - I have put the popup detection test code with a cookie. So that the test is performed once a month if the popups are not blocked. Also, i have reduced the window size to make it least noticeable as possible. – nexus Oct 14 '14 at 11:02

1 Answers1

6

As far as I know, popup blockers works by overwrite a window.open function and in most cases return a null. So one way is to detect if window.open is still nativ function.

You can test that with toString method, which return [native code] as a body of that function. toString not work in old IE, so instead of that use ''+ to convert function.

var havePopupBlockers = ('' + window.open).indexOf('[native code]') === -1;

This is not silver bullet, but can detect potential risk. I test this on Chrome, FF, IE8 and IE9 with some various popup blockers and works.

Vlada
  • 1,653
  • 19
  • 23