我有一个网站打开几个新标签/窗口。在网站的主页上,有一个“全部关闭”按钮,它应该关闭从网站打开的所有窗口。乍一看,似乎工作正常。但是,按下“关闭所有”链接时打开的最后一页将覆盖主页面的名称。结果是,每当再次调用最后打开的页面时,它不会在新选项卡中打开,而是在主页面选项卡中打开(这显然不是我想要的)。
见这个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,谷歌浏览器24.0.1312.60m和IE9中看到了这种行为,所以我认为这是javascript的预期行为。
我只是不明白为什么主页的名称被覆盖和/或如何使脚本不覆盖主页面标签的名称。任何人吗?
答案 0 :(得分:0)
PopupManager.prototype.closeWindow = function(name) {
if (this.windows[name]) {
if (!this.windows[name].closed) {
this.windows[name].opener.name="indexpage";
this.windows[name].close();
}
delete this.windows[name];
}
};