Ошибка Internet Explorer при закрытии диалогового окна JQuery UI из-за нового обновления IE (KB2761451)

Мы используем jQuery UI Dialog для вставки данных в базу данных. Когда диалоговое окно jQuery закроется, отправьте IE повисшим и показывая сообщение: "IE перестает работать". Эта проблема возникает из-за обновления "Накопительное обновление безопасности для Internet Explorer 9 для Windows 7 для x64-систем (KB2761451)". Я подтвердил удаление этого конкретного обновления, проблема устранена.

Я использую следующую строку кода, чтобы закрыть диалоговое окно

 $('#' + dialogName).dialog('close'); 

Удаление IE Update не является постоянным решением. как я могу исправить эту проблему навсегда?

Ответ 1

Вы не можете вызвать .dialog(), прежде чем DOM будет готов в IE. Переместите свой вызов на test() вместо $(document).ready();

Ответ 2

У меня такая же проблема, но в моем случае было 3 условия:

1), используя jquery-ui 1.10.3 (с 1.9.2 он отлично работает)

2) на странице init script было script, которое добавляет форму в тело:

jQuery('<form id="frmId" method="post" action="page.aspx"></form>')
    .appendTo("body");

3) показать модальный диалог:

$("<div/>").dialog({modal});

Удаление любого из этих условий решило эту проблему для меня:)

И, пример в jsfiddle.net: http://jsfiddle.net/Zm3Qm/1/

Ответ 3

Я проследил эту ошибку до наличия элементов формы в моем диалоговом окне. Выполнение .empty(); чтобы очистить содержимое, содержащее форму перед закрытием диалога, остановил IE9 от сбоя.

Ответ 4

Диалог закрывается перед сбоем IE? Что произойдет, если вы заблокируете попытку catch?

try{
    $('#' + dialogName).dialog('close'); 
}catch(e){
    alert(e);
}