user2657797
user2657797

Reputation: 3

Popup blocker issue in Firefox in Ajax call under success

I am having an issue with popup blockers. I want to open a window for my users only after I receive some data from server, in other words I need it on success.

Issue is that popup blocker will stop the window in the success section as it thinks that script is currently executing. I am using jQuery 1.7.1.min and I have tried using (as you can see below) async:false, but for some reason that doesn't work. The only workaround that I was able to do is to open a fake window and when the response comes back overwrite the fake window. It works in Chrome but it gives problems in Firefox. Need some help.

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');

}

Upvotes: 0

Views: 450

Answers (2)

Dean.DePue
Dean.DePue

Reputation: 1013

Why don't you use a dialogue box that is essentially a element that you identify and then open?

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

        );
    });

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

Upvotes: 0

ama2
ama2

Reputation: 2681

The issue is Firefox only allows popups if it is created from a user generated event, for example a click event.

You can get around this by opening a blank window before the Ajax call, keep a reference to it and then set the URL after the ajax call is complete.

Upvotes: 1

Related Questions