2

所以我们有一个内部网络应用程序,它是在 IE6 时代写回的,我们正试图达到一个可以跨浏览器工作的状态,包括移动设备。我们使用的是 ASP.NET,代码隐藏是用 VB.NET 编写的。

不幸的是,该应用程序使用了 showModalDialog 功能,该功能只能在 Internet Explorer(以及某种在 Firefox 中)中真正有效。它还利用这些弹出窗口中的 window.returnValue,因此它所期望的是,当调用 PopUpWindow() 时,javascript 将阻塞该语句并停止执行。大多数调用的格式为“var a = PopUpWindow(..)”。然后当弹出窗口关闭时,它将恢复并将 a 设置为 returnValue 然后使用它。

看起来这些天 javascript 并没有真正做阻塞函数调用,这使得寻找一个简单的跨浏览器替换的过程令人沮丧。我们有一个 javascript 文件,该文件包含在每个页面上,其中包含打开弹出窗口的功能。理想情况下,我们希望在这个文件中替换这个函数,让它在整个应用程序中工作,而不必在每个有弹出窗口的页面上进行更改。

有什么可以帮助解决这个问题的,或者是否有替换这些对话框弹出窗口的标准方法?我们正在考虑用 jQuery 对话框替换它们,但由于我们需要使用回调函数来获取 returnValue,因此它不能作为直接替换。我感觉没有简单的方法可以做到这一点(因为我们的代码依赖于阻塞 javascript),我们将不得不硬着头皮对每个页面进行更改,并弹出一个弹出窗口。

4

1 回答 1

1

您可以使用我的showModalDialog polyfill使用模态<dialog>元素,该元素适用于最新的 Google Chrome。对于其他浏览器,可以使用<dialog>polyfill

于 2014-08-04T16:05:30.013 回答