0

我有一个网站打开了几个新的标签/窗口。在网站的主页上,有一个“全部关闭”按钮,它应该关闭从网站打开的所有窗口。乍一看,它似乎工作正常。但是,主页的名称被按下“全部关闭”链接时打开的最后一页覆盖。这样做的结果是,每当再次调用上次打开的页面时,它都不会在新选项卡中打开,而是在主页选项卡中打开(这显然不是我想要的)。

看到这个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 的预期行为。

我只是不明白为什么主页的名称被覆盖和/或如何使脚本不覆盖主页选项卡的名称。任何人?

4

1 回答 1

0

好吧,我设法自己解决了。我一直在对“closeWindow”功能进行一些微调,这起到了作用:

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];
    }
};
于 2013-05-29T09:30:28.937 回答