关闭后,javascript窗口中的window.open()和window.close()不会重新打开

时间:2012-11-06 15:41:32

标签: javascript window.open

我正在使用processing.js开发基于网络的游戏,我的问题与用于管理浏览器窗口的纯JavaScript代码有关。

游戏是小型浏览器窗口(200px * 200px)的迷宫,每个边界可以是墙壁或通往另一个窗口的通道。我的问题是,如果我关闭窗口我来自那时我试图回来它不会重新打开,即使我使用之前使用的相同功能。

我在这里运行了一个git repo:GitHub - TheMidst

如果您想重现“错误”:

从github中提取代码:

  1. 启动index.html(在您最喜欢的浏览器中,我使用chrome)。
  2. 请勿等待,然后点击start button -> level0.html打开。
  3. 点击canvas->右侧的右侧 level1.html打开。
  4. 返回steps -> level0.html仍然打开。
  5. 向右移向level1.html,它不会再生成 ... =>这是我的问题。
  6. / js - >包含一个windowScripts.js,它通过函数处理窗口的打开和关闭,这是我的窗口管理器的核心,它是错误的。

    / levels - >将每个级别包含为html页面。

    / pd - >包含游戏的声音作为Pure-Data补丁(是的!)

    游戏还远没有完成,所以一切都远非完美。任何帮助将不胜感激。

    干杯。

    编辑添加一些代码

    打开我使用的弹出窗口:popUp(1); // 1是我要打开的关卡数。

    这与这个js函数有关

    function popUp(winNum){

    var windowFeatures = "toolbar=0,location=0,directories=0,status=0,menubar=0,scrollbars=0,resizable=0,left="+(winVars[winNum][0])+",top="+(winVars[winNum][1])+",width="+winVars[winNum][2]+",height="+winVars[winNum][3];
    
    
    windows[winNum] = window.open( "level"+winNum+".html", "myWindow"+winNum, windowFeatures);
    
    
    windows[winNum].moveTo(winVars[winNum][0],winVars[winNum][1]);
    

    }

    我的所有Windows属性都存储在数组中

    关闭我使用的窗口:closeWindows(0); // 0是我要关闭的窗口号。

    function closeWindows(winNum2){

    setTimeout(widows [winNum2] = window.close(),50); }


    实际上我在父窗口等之间有点混乱......

    使用“window.opener.popUp(myPopup)”确实修复了问题

    对github repo进行了一些更改,如果你遇到同样的问题,你仍然可以参考github repo。

    干杯

1 个答案:

答案 0 :(得分:0)

作为一般规则,使用多个浏览器窗口是一个坏主意,因为它与各种浏览器恶意软件使用的界面完全相同,例如弹出窗口和弹出窗口。事实上,完全有可能这就是为什么你会得到你所看到的行为。

相反,由于您需要多个图块,因此只需使用绝对定位的div元素。