我有一個網站打開幾個新的標籤/窗口。在網站的主頁上,有一個按鈕'關閉所有',它應該關閉從網站打開的所有窗口。乍一看,它似乎工作得很好。但是,當按下'全部關閉'鏈接時,主頁面的名稱被最後打開的頁面覆蓋。這樣做的結果是,每當最後一次打開的頁面被再次調用時,它不會在新的選項卡中打開,而是在主頁面選項卡中(這顯然不是我想要的)。JavaScript從另一個窗口關閉一個窗口覆蓋調用窗口名稱
看到這個兆瓦:
popupmanager.js:
function PopupManager() {
this.name = "_popupmanager_";
this.windows = {};
};
PopupManager.prototype.open = function(url, name) {
this.windows[name] = window.open(url, name);
this.windows[name].focus();
};
PopupManager.prototype.closeAll = function() {
for (name in this.windows) {
this.closeWindow(name);
}
};
PopupManager.prototype.closeWindow = function(name) {
if (this.windows[name]) {
this.windows[name].close();
delete this.windows[name];
}
};
主要頁面之中的index.html:
<!doctype html>
<html>
<head>
<script src="./popupmanager.js"></script>
<script>
var popupManager = new PopupManager();
</script>
</head>
<body>
<ul>
<li><a href="javascript:popupManager.open('http://www.facebook.be', 'facebook')">facebook</a></li>
<li><a href="javascript:popupManager.open('http://www.google.be', 'google')">google</a></li>
<li><a href="javascript:popupManager.closeAll()">close all/a></li>
</ul>
</body>
</html>
現在,當你點擊第一個環節上,比第二,兩頁都打開。如果你按'關閉所有',一切似乎工作正常。但是,在這一點上,主頁面選項卡的名稱爲'google'(作爲函數'closeAll'的執行結果)。如果再次單擊第二個鏈接,它會在主頁面中打開,而不是在新標籤中打開。我在Firefox 21.0,Google Chrome 24.0.1312.60m和IE9中看到了這種行爲,所以我認爲這是javascript的預期行爲。
我只是不明白爲什麼主頁的名稱被覆蓋和/或如何使腳本不覆蓋主頁面標籤的名稱。任何人?