1

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

游戏是一个迷宫般的小浏览器窗口(200px*200px),每个边框可以是一面墙,也可以是通往另一个窗口的通道。我的问题是,如果我关闭来自的窗口,然后我尝试取回它不会重新打开,即使我使用以前使用过的相同功能。

我在这里运行了一个 git 存储库:GitHub - TheMidst

如果要重现“错误”:

从 github 拉取代码:

  1. 启动index.html(在你最喜欢的浏览器中,我使用 chrome)。
  2. 不要等待并单击start button -> level0.html打开。
  3. 通过单击打开的右侧转到右侧canvas-> level1.html
  4. 回到你的steps -> level0.html仍然打开。
  5. 回到右边level1.html,它不会重新生成... =>这是我的问题。

/js -> 包含一个windowScripts.js,它通过函数处理窗口的打开和关闭,这是我的窗口管理器的核心,它有问题。

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

/pd -> 包含纯数据补丁的游戏声音(是的!)

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

干杯。

编辑添加一些代码

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

这与这个js函数有关

函数弹出(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 是我要关闭的窗口的编号。

函数 closeWindows(winNum2){

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


实际上我在父窗口等之间有点困惑......

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

github repo 已经做了一些改动,如果你有同样的问题,你仍然可以参考 github repo。

干杯

4

1 回答 1

0

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

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

于 2012-11-06T15:51:32.933 回答