因此,我们有一个内部网络应用程序,这个应用程序是在IE6中写回来的,我们正试图进入一个可以跨浏览器工作的状态,包括移动设备。我们使用的是ASP.NET,代码隐藏是用VB.NET编写的。
不幸的是,该应用程序使用showModalDialog函数,该函数仅适用于Internet Explorer(以及Firefox中的各种版本)。它还使用了来自这些弹出窗口的window.returnValue,所以它期望的是当调用PopUpWindow()时,javascript会阻塞该语句并停止执行。大多数调用的形式为“var a = PopUpWindow(..)”。然后当弹出窗口关闭时,它将恢复并设置为returnValue然后再使用它。
看起来这些天javascript并没有真正阻止函数调用,这使得查找简单的跨浏览器替换的过程令人沮丧。我们有一个javascript文件,包含在每个包含打开弹出窗口的功能的页面上。理想情况下,我们希望在此文件中替换此函数,并使其在整个应用程序中运行,而无需在每个有弹出窗口的页面上进行更改。
有什么可以帮助解决这个问题,还是有一种替代这类对话框弹出窗口的标准方法?我们正在考虑用jQuery对话框替换它们,但由于我们需要使用回调函数来获取returnValue,因此它不能作为替代品。我觉得没有简单的方法可以做到这一点(因为我们的代码依赖于阻止javascript),我们将不得不咬紧牙关并用弹出窗口对每个页面进行更改。
答案 0 :(得分:0)
您可以使用模式<dialog>
元素来使用我的showModalDialog polyfill,该元素适用于最新的Google Chrome。对于其他浏览器,可以使用<dialog>
polyfill。