1

我需要一个关于带有 setTimeout 的 ShowModalDialog 的功能,所以我在 Google Chrome 中测试了弹出窗口和 ModalDialog,我遇到了一些问题。页面加载时显示了两个弹出窗口。一个由 winodw.open() 打开,另一个由 window.showmodaldialog() 打开,如下所示:

setTimeout(function(){window.open("PopupWindow.html","_blank","")},100);
setTimeout(function(){window.showModalDialog("ModalDialog.html","","")},100)};

打开两个弹出窗口后,我单击 PupupWindow.html 上的一个按钮。它将按如下方式调用该函数:

function test()
{
  setTimeout(function(){alert("test");},1000);
}

它在 Google Chrome 14 中运行良好。在我将 Google Chrome 更新到版本 19 后,PopupWindow.html 将在调用 test() 时挂起,直到 ModalDialog.html 关闭。请告诉我为什么谷歌浏览器 19 上的案例坏了,或者在谷歌浏览器 19 上做 showModalDialog 和 window.open() 的任何方式。感谢您的帮助。

4

1 回答 1

0

新版本的 Chrome 实际上表现出正确的行为。我在 Safari 和 Firefox 中也会发生同样的行为。

模态对话框本质上应该阻止用户与应用程序的其余部分进行交互,直到他们完成模态对话框。

Chrome 一直被许多无法正确处理的问题所困扰。请参阅http://code.google.com/p/chromium/issues/detail?id=4202http://code.google.com/p/chromium/issues/detail?id=16045http:// code.google.com/p/chromium/issues/detail?id=42939有一些例子。如果您遇到不同的行为,他们似乎最终开始清理其中的一些。

通常window.showModalDialog应避免使用,原因有很多,我在此详述 - http://tjvantoll.com/2012/05/02/showmodaldialog-what-it-is-and-why-you-should-never-use-它/ .

如果您需要模态对话框,我强烈推荐jQuery UI 的对话框插件

于 2012-07-06T01:05:35.247 回答