У меня проблема с блокировщиками всплывающих окон. Я хочу открыть окно для своих пользователей только после того, как я получу некоторые данные с сервера, другими словами, мне это нужно на успех. Проблема заключается в том, что блокировщик всплывающих окон остановит окно в разделе успеха, поскольку он считает, что скрипт в настоящее время выполняется. Я использую jquery 1.7.1.min, и я попытался использовать (как вы можете видеть ниже) async: false. Но по какой-то причине это не работает. Единственная работа, которую я смог сделать, это открыть поддельное окно, и когда ответ вернется, перезапись поддельного окна. Он работает в хроме, но он создает проблемы в firefox. Нужна помощь. благодаря
function mypopup() {
$j.ajax({
type: 'POST',
url: "/my/phppage",
data: mydata,
async: false,
success: function (response) {
window.open(response, 'Dialogue Message', 'width=650,height=550,left=50,top=50,location=no,status=yes,scrollbars=yes,resizable=yes');
}
});
window.open("openfakewindow", 'Dialogue Message', 'width=650,height=550,left=50,top=50,location=no,status=yes,scrollbars=yes,resizable=yes');
}
Почему вы не используете диалоговое окно, которое по существу является элементом, который вы идентифицируете и затем открываете?
$(document).ready(function () {
$("#divAccountDialog").dialog(
{
modal: true,
autoOpen: false,
width: 700,
buttons: { Cancel: function () { $(this).dialog("close"); } }
}
);
});
someotherfunction() {$ ('# divAccountDialog'). dialog ('open');
Проблема заключается только в том, что Firefox разрешает всплывающие окна, если они созданы из генерируемого пользователем события, например событие щелчка.
Вы можете обойти это, открыв пустое окно перед вызовом Ajax, сохраните ссылку на него, а затем установите URL-адрес после завершения вызова ajax.