2012-11-06 40 views
1

我正在開發基於網絡的遊戲,使用processing.js,我的問題涉及用於管理瀏覽器窗口的純JavaScript代碼。javascript窗口中的window.open()和window.close()在關閉後不會重新打開

遊戲是小的瀏覽器窗口(200像素* 200像素)的每個邊界可以是一個壁或通道到另一個窗口一個迷宮。我的問題是,如果我關閉,我從那時候來的窗口,我試着找回它不會重新開放,即使我使用了之前使用的相同的功能。

我有一個混帳回購協議運行在這裏: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函數

功能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]); 

}

我的所有窗口屬性存儲在陣列

關閉我使用窗口:closeWindows(0); // 0是我想要關閉的窗口的編號。

功能closeWindows(winNum2){

的setTimeout(寡婦[winNum2] =窗口。關閉(),50); }


其實我一直在使用 「window.opener.popUp(myPopup)」 做了修正

一些變化已經在問題有點beetween父窗口等混亂......

在github上進行回購,如果你有同樣的問題,你仍然可以參考github回購。

乾杯

+0

也許你可以在錯誤發生在這裏發佈一些代碼? – David

+0

我所有的代碼都在github頁面中。但我實際上並不確切知道錯誤發生的位置。我只能猜測它可能是在windowScripts.js – user1803507

回答

0

一般情況下,使用多個瀏覽器窗口是一個壞主意,因爲它正是該瀏覽器的惡意軟件的各種用途,如彈出式廣告和背後彈出式窗口相同的接口。事實上,完全有可能這就是爲什麼你會看到你所看到的行爲。

相反,既然你想多瓦,只需使用絕對定位div元素。

+0

是的,我知道這是一個壞主意,但實際上它是重要的概念。如果我要使用div元素,我將無法實現我想要的外觀:每個級別一頁。 – user1803507

+0

您可以通過每個頁面級別的'div'元素來獲得所需的外觀。你不必平鋪它們。如果你希望它們像完整的窗口一樣運行,只需使用jQuery UI小部件[Draggable](http://jqueryui.com/draggable/)即可。 – eh9

+0

我明白,但所有的比賽仍然會在一個窗口中發生嗎?我希望能夠在幾個窗口中移動,但如果我無法實現我想要的功能,它就是一個很好的解決方法。 – user1803507

相關問題