0

我遇到了弹出窗口阻止程序的问题。我只想在我从服务器收到一些数据后才为我的用户打开一个窗口,换句话说,我需要它成功问题是弹出窗口阻止程序将在成功部分停止窗口,因为它认为脚本当前正在执行。我正在使用 jquery 1.7.1.min 并且我尝试过使用(如下所示)async:false。但由于某种原因,这不起作用。我能做的唯一解决方法是打开一个假窗口,然后在响应返回时覆盖假窗口。它在 chrome 中工作,但在 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');

}
4

2 回答 2

1

问题是 Firefox 仅允许从用户生成的事件(例如单击事件)创建弹出窗口。

您可以通过在 Ajax 调用之前打开一个空白窗口来解决此问题,保留对它的引用,然后在 ajax 调用完成后设置 URL。

于 2013-11-15T01:28:59.047 回答
0

为什么不使用本质上是您识别然后打开的元素的对话框?

$(document).ready(function () {
        $("#divAccountDialog").dialog(
            {
                modal: true,
                autoOpen: false,
                width: 700,
                buttons: { Cancel: function () { $(this).dialog("close"); } }
            }

        );
    });

someotherfunction () { $('#divAccountDialog').dialog('open');

于 2013-11-15T18:08:30.577 回答