всплывающее окно заблокировано в обработчике успеха ajax - PullRequest
8 голосов
/ 15 августа 2011

Я пытаюсь открыть всплывающее окно, чтобы позволить пользователю аутентифицироваться в твиттере, не покидая страницу, которую он просматривает.Я видел эту технику, используемую в Интернете, особенно с приложением комментирования Disqus.Однако я могу получить только два результата: либо сообщение «Всплывающее окно заблокировано», либо ничего не происходит.

Я пытался использовать подходы, изложенные здесь и здесь .Как я могу это исправить?

Мой код в настоящее время выглядит так:

var windowSizeArray = [ "width=200,height=200",
                            "width=300,height=400,scrollbars=yes" ];
var url = $('.twitter_popup').attr("href");
var windowName = $('.twitter_popup').attr("name");
var windowSize = windowSizeArray[$('.twitter_popup').attr("rel")];
window.open(url, windowName, windowSize);

Ответы [ 2 ]

20 голосов
/ 15 августа 2011

Блокировщики всплывающих окон в браузере блокируют всплывающие окна, когда код выполняется в контексте выполнения скрипта.

Например, если мы откроем новое окно на щелчке, блокировщик всплывающих окон не заблокирует его, но если мы попытаемся открыть новое окно с помощью setTimeout, вы увидите, что блокировщик всплывающих окон заблокирует это.Это происходит потому, что по истечении времени ожидания контекст становится контекстом выполнения скрипта вместо действия пользователя.Это то же самое поведение, когда мы пытаемся открыть новое окно в обработчике обратного вызова ajax.

Я думаю, что вы попали в подобную ситуацию.

Live пример

Если по какой-то причине вы хотите открыть всплывающее окно в самом обработчике успеха ajax, то вы можете сделать это, выполнив синхронный вызов ajax.Всплывающее окно не будет заблокировано.

0 голосов
/ 15 августа 2011

проблема может заключаться в следующих областях ... 1. windowSizeArray содержит только один элемент.2. код $ ('. Twitter_popup'). Attr ("rel") может дать вам некоторые результаты сравнения, чем ожидалось, потому что имя класса используется в качестве селектора

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...