javascript - 跨浏览器 showModalDialog 替换

标签 javascript jquery html

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

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

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

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

最佳答案

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

关于javascript - 跨浏览器 showModalDialog 替换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10721159/

相关文章:

javascript - analytics.js net::ERR_CONNECTION_REFUSED

Javascript 和 Node.js - 发出 JSON 请求

javascript - 通过 HTML5 捕获麦克风输入

javascript - 单击事件在循环中多次触发

javascript - 如何使 Prop 不可变以防止在 React 中重新渲染?

javascript - ('click' 上的 JQuery)在单击时不起作用

javascript - Jquery 自动提交不起作用

html - 用特殊字符填充文本区域

javascript - 从控件事件中获取 html 中的 javascript 结果

javascript - 我如何在一行函数中执行我的 jquery 悬停函数