暂停javascript直到弹出窗口关闭

时间:2014-06-19 09:26:03

标签: javascript jquery popup

我想做这样的事情:

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

我发现showModalDialog可以使这项工作成功,这里是jsfiddle example

$("#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直到弹出窗口关闭?

非常感谢任何建议。

1 个答案:

答案 0 :(得分:0)

我可以看到你使用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