不按顺序关闭模式 jQuery 对话框会导致 IE 中出错



作为放弃对旧浏览器支持的一部分,我最近将 ASP.NET 应用程序更新为 jQuery 3.1.1 和 jQuery UI 1.12.1。在此之后,我注意到我在IE 11中将错误记录到控制台。

错误如下:

SCRIPT5007: Unable to get property '_focusTabbable' of undefined or null reference
jquery-ui.js, line 12794 character 7

我能够将问题跟踪到长时间运行的调用(例如可能需要 2-3 秒的数据库查询(打开"请稍候"模式对话框的事实。打开并填充内容对话框后,此对话框将关闭。关闭内容对话框时,会发生上述错误。

我能够将问题压缩为以下JSFiddle:https://jsfiddle.net/qaf1ut4b/8/

我需要做什么才能在打开和填充内容对话框之前打开等待对话框?首先关闭等待对话框可以解决问题,但这还不够,因为内容对话框可能需要很长时间才能填充,因为数据库查询完成后会将大量<option>元素加载到 DOM 中。

如果你同意在关闭模态时销毁它们,你可以使用这个:

$('#wait-dialog').dialog({
autoOpen: false,
height: 88,
width: 250,
modal: true,
title: 'Please Wait',
close: function (event, ui) {
$(this).dialog('destroy');
},
open: function () { }
});
$('#content-dialog').dialog({
autoOpen: false,
height: 188,
width: 350,
modal: true,
title: 'I Am Some Content',
close: function (event, ui) {
$(this).dialog('destroy');
},
open: function () { }
});

这是对你的jsfiddle
的修复:https://jsfiddle.net/qaf1ut4b/9/

最新更新