Chrome 37+模式对话框returnValue的解决方法

我有一个父调用者页面和一个模态页面,当模态页面关闭时,调用者页面从弹出模式页面获得一个returnValue。 即使是旧版本Chrome的showModalDialog()总是返回undefined,有很多变通办法[ javascript – showModalDialog在Chrome中没有返回值 。

但是现在Chrome37 +中的window.showModalDialog()已被设计弃用[ http://blog.chromium.org/2014/07/disabling-showmodaldialog.html] ,那些获取弹出窗口的returnValue的变通办法不再适用。

比我尝试过window.open() ,但window.open的行为与showModalDialog完全不同,并且它不容易获得正确的returnValue(因为window.open()是异步的)。

那么有一个完美的解决方法吗?

您可以使用Jquery模式对话框架

JQuery模式对话框示例

 $( ".selector" ).dialog({ close: function( event, ui ) { alert('dialog closed'); return; } }); 

或Fancybox框架

Fancybox示例

 $(".fancybox").fancybox({ afterClose : function() { alert('dialog closed'); return; } }); 

两个框架都提供回调处理程序,以便您可以将值存储或传递给其他函数…