在按钮单击上排序两个动作

时间:2014-11-27 11:21:02

标签: javascript asp.net javascript-events

问题:我有一个asp.net按钮,点击即可使用window.open()

在客户端使用<script></script>显示另一个窗口

&#34;实际上,一旦用户关闭子窗口,我需要在我的父页面上显示我的按钮所在的弹出窗口(警告消息)。&#34;

我尝试的一些事情如下:

  1. 我尝试使用setTimeOut()暂停一段时间。这不起作用,因为控件不等待,直到超时完成。它只是继续执行下一组代码。

  2. 我尝试使用setInterval()但由于某种原因它不适合我。以下是该代码片段。

  3. $(document).ready(function () {
                $('#<%=btnClick.ClientID%>').bind('click', function () {
                    var newWindow = window.open("http://www.google.com/", "google", 'resizable=1,width=900,height=800,scrollbars=1', '_blank');
                    newWindow.moveTo(0, 0);
                    var test = setInterval(function (e) {
                        if (newWindow.closed) {
                            alert("HEYY");
                            clearInterval(test);
                            __doPostBack("<%= btnClick.UniqueID %>", "");
                        }
                        else {
                            e.preventDefault();
                        }
                    }, 5000);
                });
            });
    

    1. 我也尝试过调用ajax打开新窗口并将其设为async : false,它再次对我没有帮助。

1 个答案:

答案 0 :(得分:0)

将窗口和计时器变量置于事件处理程序的范围之外。您需要进行轮询,即定期继续检查窗口是否已关闭。使用setInterval进行轮询将完成这项工作。

var newWin, pollTimer;

$('#btnId').bind('click', function () {
    newWin = window.open("...", "...", "");
    pollTimer = window.setInterval(function() {
        if (newWin.closed) { 
            window.clearInterval(pollTimer);
            callCodeWhenPopupCloses();
        }
    }, 5000);
});

function callCodeWhenPopupCloses() {
    alert("Popup closed.");
    ...
}