检查窗口是否打开,如果没有调用另一个javascript函数

时间:2012-11-24 21:43:21

标签: javascript

我正在使用以下javascript打开另一个窗口,我想检查该窗口是否实际打开,但是如果窗口未打开,我希望它调用“pause()”函数。即使经过3天的研究,我也不知道如何做到这一点,有人可以指导我吗?

打开窗口的javascript:

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.2.6/jquery.js"></script>
    <script type="text/javascript">
        var windowSizeArray = ["width=300,height=300",
                                "width=200,height=400,scrollbars=yes"];

        $(document).ready(function () {
            $('#newWindow').click();
            window.open($('#newWindow').attr('href'), 'window name', 'window settings')
            $('.newWindow').click(function (event) {

                var url = $(this).attr("href");
                var windowName = "popUp"; //$(this).attr("name");
                var windowSize = windowSizeArray[$(this).attr("rel")];

                window.open(url, windowName, windowSize);

                event.preventDefault();

            });
        });


    </script>

如果该窗口未打开,我希望它调用暂停功能:

<a href="javascript:void(0);" onclick="pause();"><img name="b1" src="system/modules/surf/stop.png" border="0" alt="Pause" title="Pause" style="position:absolute;top:28px;margin-left:5px"></a>

2 个答案:

答案 0 :(得分:1)

函数window.open()返回新创建的窗口的句柄,该窗口具有closed属性。如果新窗口已关闭,则此属性为true:

var popuphandle=window.open(...);
alert(popuphandle.closed);

如果您需要持续监控窗口状态,请使用window.setInterval()

window.setInterval(function()
{
    if (popuphandle.closed) pause();
}, 1000);

答案 1 :(得分:0)

你可以在新窗口中反复告诉window.opener它仍然通过调用opener的函数打开它

window.opener.callFunctionToTellIamOpened()

要反复调用此函数,您可以使用setInterval http://www.w3schools.com/jsref/met_win_setinterval.asp