简体   繁体   中英

JQuery Modal close minimizes window for a few users (in IE9)

So, a few users are experiencing their browser window minimizing when they click save on this modal window. For those users, it's consistent, but it's just a small number of users. Most people are using IE9, and everyone that has this problem is using IE9. It happens on the .dialog('close'); call, and it minimizes before it reaches the close function. Does anyone have any ideas?

$("#new-specified").dialog($.extend({}, ns.modalOptions, {
            open: function () {
                if (ns.disabled) {
                    $(this).dialog("close");
                }
                $(this).dialog("option", "title", app.viewModels.MissionViewModel.EditingSpecified() ? "EDIT SPECIFIED TASK" : "NEW SPECIFIED TASK");
                $(this).parent().find("button:contains('Cancel')").removeClass().addClass("cancel-button");
                $(this).parent().find("button:contains('SAVE')").removeClass().addClass("save-button");
                app.viewModels.MissionViewModel.CurrentSpecified().TempDescription(app.functions.htmlUnescape(app.viewModels.MissionViewModel.CurrentSpecified().Description()));
                if (app.viewModels.MissionViewModel.SpecifiedTasks().length === 0) {
                    app.viewModels.MissionViewModel.CurrentSpecified().IsMainEffort(true);
                }
            },
            buttons: {
                "Cancel": function() {
                    $(this).dialog("close");
                },
                "SAVE": function () {
                    var newSpecified = app.viewModels.MissionViewModel.CurrentSpecified();
                    newSpecified.Description(app.functions.htmlEscape(newSpecified.TempDescription()));
                    newSpecified.Validate();
                    if (newSpecified.IsInError()) {
                        return;
                    }
                    if (!app.viewModels.MissionViewModel.EditingSpecified()) {
                        app.viewModels.MissionViewModel.SpecifiedTasks.push(newSpecified);
                    } else {
                        app.viewModels.MissionViewModel.OldSpecified().CopyFrom(newSpecified);
                        newSpecified = app.viewModels.MissionViewModel.OldSpecified();
                    }

                    app.viewModels.MissionViewModel.CurrentSpecified(new app.models.SpecifiedTaskViewModel());
                    var isMainEffort = newSpecified.IsMainEffort();
                    var index = isMainEffort ? app.viewModels.MissionViewModel.SpecifiedTasks().indexOf(newSpecified) : -1;
                    app.viewModels.MissionViewModel.VerifyMainEffort(index);
                    ns.setupSpecifiedModal();
                    //VV This line below minimizes
                    $(this).dialog("close");
                    ns.setupDroppable();
                }
            },
            close: function() {
                // We don't reach here before the window minimizes
                app.viewModels.MissionViewModel.CurrentSpecified(new app.models.SpecifiedTaskViewModel());
                app.viewModels.MissionViewModel.EditingSpecified(false);

                app.viewModels.MissionViewModel.VerifyMainEffort(-1);
                ns.saveMissionToServer();
            }
        }));

This question might have the solution: Dynamically loading jQuery mobile causes IE to minimize

Seems like calling blur() forces the IE window to the back of the stack. If you're using jQuery Mobile, here is the related issue: https://github.com/jquery/jquery-mobile/issues/2057

If you're not using jQuery Mobile, look for calls to blur() in your code.

This was also found in jquery-UI 1.10.0: http://bugs.jqueryui.com/ticket/9420 .

As first comment suggest, the cause is that blur() is called on document.body.

As a workaround you can override body.blur() , look at How do I disable body.blur() in IE8?

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM