尝试重用弹出窗口时出现奇怪的行为

时间:2010-02-12 16:45:01

标签: javascript popup

我们有一个客户要求困扰我,令人尴尬。

客户端有一组需要在弹出窗口中打开的链接 - 如果单击任何链接,它应该重用相同的弹出窗口。很简单,我想,所以我把这样的东西扔到了一起:

<html>
<head>
    <title>Test</title>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
 <script type="text/javascript">
        var popupWin = null;
        function openWindow(url) {
            if (popupWin == null) {
                popupWin = window.open(url,'p2p','');
            } else {
                if (!popupWin.closed) {
                    popupWin.location.href = url;
                } else {
                popupWin = window.open(url,'p2p','');
                }
            }
            popupWin.focus();
        }
    </script>
</head>
<body marginheight="0" marginwidth="0" leftmargin="0" topmargin="0" bgcolor="#ffffff">
    <ul>
<li><a href="http://www.google.com" target="p2p" onclick="openWindow(this.href);return false;">Google</a></li>
<li><a href="http://www.facebook.com" target="p2p" onclick="openWindow(this.href);return false;">FB</a></li>
<li><a href="http://www.apple.com" target="p2p" onclick="openWindow(this.href);return false;">Apple</a></li>
<li><a href="http://www.espn.com" target="p2p" onclick="openWindow(this.href);return false;">ESPN</a></li>
</ul>
</body>
</html>

如果将其放入html文件中,则所有操作都符合预期。

我的问题是,当我按照他们的要求使用客户端的Intranet URL时,我看到的行为如下:

  1. 点击其中一个弹出链接(弹出链接在新窗口中打开)

  2. 点击另一个弹出链接(链接替换第一个弹出窗口中打开的页面)

  3. 关闭弹出窗口。

  4. 单击其中一个弹出链接(无关紧要,在新的弹出窗口中打开为 预期)

  5. 点击另一个弹出链接(弹出窗口在 new 弹出窗口中打开,而不是按预期重复使用弹出窗口)

  6. 奇怪的是,如果我单步执行Firebug中的javascript代码,它会正确到达if语句的分支,该分支确定弹出窗口存在且未关闭(因此应该重用),但该行代码:

    popupWin.location.href = url;
    

    出于某种原因结束了打开一个新窗口。

    那么,知道发生了什么事吗?我猜客户要我弹出的页面上有些奇怪的东西是以某种神秘的方式搞砸了,但我无法弄清楚它是什么。希望我能提供给你的链接,但遗憾的是它们是私密的。

    非常感谢您的帮助。

    的Mustafa

1 个答案:

答案 0 :(得分:0)

HTML中不具备此功能吗?如果没有javascript,它不应该工作吗?