Detect Blocked popups without opening a popup

喜欢而已 提交于 2019-12-07 11:21:16

问题


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


回答1:


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.



来源:https://stackoverflow.com/questions/26094333/detect-blocked-popups-without-opening-a-popup

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