Popup detection before user logs in

痴心易碎 提交于 2019-12-06 00:17:03

问题


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 accomplishing this?


回答1:


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()



回答2:


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");



回答3:


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.




回答4:


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.




回答5:


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



来源:https://stackoverflow.com/questions/250216/popup-detection-before-user-logs-in

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