我有一个网站打开了几个新的标签/窗口。在网站的主页上,有一个“全部关闭”按钮,它应该关闭从网站打开的所有窗口。乍一看,它似乎工作正常。但是,主页的名称被按下“全部关闭”链接时打开的最后一页覆盖。这样做的结果是,每当再次调用上次打开的页面时,它都不会在新选项卡中打开,而是在主页选项卡中打开(这显然不是我想要的)。
看到这个mwe:
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 的预期行为。
我只是不明白为什么主页的名称被覆盖和/或如何使脚本不覆盖主页选项卡的名称。任何人?