Vyhněte se blokování vyskakovacích oken v prohlížeči

Vyvíjím ověřovací tok OAuth čistě v JavaScriptu a chci uživateli zobrazit okno „udělit přístup“ ve vyskakovacím okně, ale zablokuje se.

Jak mohu zabránit vyskakovacím oknům vytvořeným buď window.open nebo window.showModalDialog před blokováním vyskakovacích oken různých prohlížečů?

Odpověď

Obecným pravidlem je, že blokování vyskakovacích oken se aktivuje, pokud window.open nebo podobný je vyvolán z javascriptu, který není vyvolán přímou akcí uživatele . To znamená, že můžete zavolat window.open v reakci na kliknutí na tlačítko bez zásahu blokovačem vyskakovacích oken, ale pokud vložíte stejný kód do události časovače, bude zablokován. Hloubka řetězce hovorů je také faktorem – některé starší prohlížeče se dívají pouze na bezprostředního volajícího, novější prohlížeče mohou trochu ustoupit, aby zjistily, zda volajícím bylo kliknutí myší atd. Udržujte to co nejmělčí, abyste se vyhnuli blokování vyskakovacích oken.