我有一个现有的 Web 应用程序,它使用 window.showmodaldialog()
来显示某些表单,并根据返回值执行其他一些 JavaScript
例如:
var retVal = window.showmodaldialog('...');
if (retVal==XXX)
callXXX();
else
callYYY();
当执行 showModalDialog()
时,它会阻止主窗口上的 JS 执行,直到模式关闭。
我正在尝试用 jQuery 对话框替换这些模态窗口,但问题是一旦 $(...).dialog().open()
被执行,JavaScript 执行不会等待用于关闭对话框。
我知道有一些 jQuery API 允许我配置回调函数,但这对我来说涉及很多更改。无论如何我可以暂停 JavaScript 执行直到对话框关闭(我必须仍然能够从对话框执行脚本)。
最佳答案
不幸的是,没有。您将需要使用某种回调函数。在 JavaScript 中像这样“阻塞”是一个坏主意,因为只有一个执行线程并且 JavaScript 使用事件驱动模型。
你可以做这样的事情来“等待”返回值,但这根本不会“阻止”其他执行:
var myReturn,
myInterval = setInterval(function () {
if (myReturn != undefined) {
clearInterval(myInterval);
// Rest of processing code here.
}
}, 50);
$('myContainer').dialog(close: function () {
myReturn = 'Dialog Closed';
}).open();
应该避免尝试“阻止”或“暂停”JavaScript 的执行——该语言根本就不是为它设计的。
关于javascript - 使用 jQuery 创建 JS 执行阻塞对话框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3537771/