暂停javascript直到弹出窗口关闭

pause javascript until popup window is closed

本文关键字:窗口 javascript 暂停      更新时间:2023-09-26

我想这样做:

/*do something*/
var returnValue = /*open a popup window*/
/*do something with return value*/

我发现showModalDialog可以使这个工作,这里是jsfiddle的例子:

$("#test").click(function() {
    var w = window.showModalDialog("about:blank",window , "");
    alert("popup closed!");
});

但是不幸的是iPad上的safari不支持showModalDialog。我能想到的唯一办法是:

父窗口

window.callback = /*callback function after the popup closed*/
/*open a popup window*/

子窗口

window.onbeforeunload = function() {
    window.opener.callback.call()
}

但是使用回调使代码难以阅读。是否有更好的方法来暂停javascript,直到弹出窗口关闭?

我可以看到你使用jQuery。如果允许您使用jQueryUI,您可以使用jQueryUI对话框小部件:

JS

$(function() {
  $( "#dialog" ).dialog({
     autoOpen:false,
     close: function() {alert('window closed')} //your "on close" logic here
  });  
  $( "#test" ).click(function() {
      $( "#dialog" ).dialog( "open" );
  });
});
HTML

<div id="dialog" title="My Dialog">
    <p>my content </p>
</div>
<button id="test">open blocking popup</button>

JSFiddle