JQuery Modal close минимизирует окно для нескольких пользователей (в IE9)

Так, некоторые пользователи испытывают сворачивание окна своего браузера, когда они нажимают сохранить в этом модальном окне. Для тех пользователей это согласованно, но это всего лишь небольшое количество пользователей. Большинство людей используют IE9, и все, у кого есть эта проблема, используют IE9. Это происходит на .dialog('close'); вызов, и он минимизирует, прежде чем достигнет функции закрытия. У кого-нибудь есть какие-либо идеи?

$("#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();
            }
        }));

2 ответа

Это также было найдено в jquery-UI 1.10.0: http://bugs.jqueryui.com/ticket/9420.

Как следует из первого комментария, причина в том, что blur() вызывается на document.body.

В качестве обходного пути вы можете переопределить body.blur()Посмотрите, как отключить body.blur() в IE8?

Этот вопрос может иметь решение: динамическая загрузка jQuery mobile приводит к минимизации IE

Похоже на звонок blur() вынуждает окно IE к задней части стека. Если вы используете jQuery Mobile, вот связанная проблема: https://github.com/jquery/jquery-mobile/issues/2057

Если вы не используете jQuery Mobile, ищите звонки blur() в вашем коде.

Другие вопросы по тегам