Avoid browser popup blockers

javascript, modal-dialog, popup, popup-blocker

Solution

The general rule is that popup blockers will engage if `window.open` or similar is invoked from javascript that is not invoked by direct user action. That is, you can call `window.open` in response to a button click without getting hit by the popup blocker, but if you put the same code in a timer event it will be blocked. Depth of call chain is also a factor - some older browsers only look at the immediate caller, newer browsers can backtrack a little to see if the caller's caller was a mouse click etc. Keep it as shallow as you can to avoid the popup blockers.

Problem

I'm developing an OAuth authentication flow purely in JavaScript and I want to show the user the "grant access" window in a popup, but it gets blocked. How can I prevent pop up windows created by either `window.open` or `window.showModalDialog` from being blocked by the different browsers' pop-up blockers?

Original source

Related problems