Обход блокировщика всплывающих окон в window.open, когда установлено JQuery event.preventDefault()

Я хочу отображать диалоговое окно JQuery условно при нажатии на гиперссылку.

У меня есть требование, например, при условии 1 открыть диалог JQuery, и если условие 1 не выполняется, перейти на страницу, на которую ссылается тег href, чье событие клика находится под вопросом.

Я могу вызвать функцию по событию клика по ссылке. Эта функция теперь проверяет указанное условие, выполняя другой URL-адрес (который выполняет мой контроллер Spring и возвращает ответ).

Все работает отлично, только window.open блокируется блокировщиком всплывающих окон.

$('a[href*=/viewpage?number]').live('click', function(e) {
    e.preventDefault();
    redirectionURL = this.href;
    pageId= getUrlVars(redirectionURL)["number"];
    $.getJSON("redirect/" + pageId, {}, function(status) {
        if (status == null) {
            alert("Error in verifying the status.");
        } else if(!status) {
            $("#agreement").dialog("open");
        } else {
            window.open(redirectionURL);
        }
    });
});

Если я удаляю e.preventDefault(); из кода, блокировщик всплывающих окон не блокирует страницу, однако для условия 1 он затем открывает диалог, а также открывает страницу 'href'.

Если я решу одну проблему, это создаст проблему для другой. Я не могу отдать должное обоим условиям одновременно.

Не могли бы вы помочь мне решить эту проблему, пожалуйста?

После того, как эта проблема будет решена, мне нужно решить другую проблему, а именно навигацию по событию OK в диалоге :)

96
задан T.J. Crowder 1 March 2012 в 10:49
поделиться