javascript - 使用 jQuery 创建 JS 执行阻塞对话框

标签 javascript jquery

我有一个现有的 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/

相关文章:

javascript - HTML5 - 延迟 Canvas 绘制

javascript - 如何在 php 程序中的 jQuery/Ajax 函数中指向正确的表行

javascript - 用于计算空文本框数量的 jQuery 选择器在 IE9/IE8 中不起作用

javascript - AngularJS 类型错误 : "track" is not a function

javascript - 尝试应用自定义滚动条

javascript - Google Autocomplete API - 格式化输出结果

javascript - 如何创建类似标记的 Google Latitude?

javascript - 有没有办法优化 svg 的性能?

javascript - 如何确保拖动时数据在 d3 中正确传递?

javascript - .json()用于错误处理的内容是什么?