在成功的ajax调用中的Firefox中的弹出窗口阻止程序问题

时间:2013-11-15 01:24:38

标签: javascript jquery javascript-events

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

}

2 个答案:

答案 0 :(得分:0)

问题是Firefox只允许弹出窗口,如果它是从用户生成的事件创建的,例如点击事件。

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

答案 1 :(得分:0)

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

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

        );
    });

someotherfunction(){          $( '#divAccountDialog')对话框( '开放');