如何在cookie中存储一个windows.open的JS数组

时间:2013-04-04 10:12:42

标签: javascript jquery json

我创建了一个Web应用程序,当用户点击某个nenu时,它会在新窗口中打开,如果用户已在某个窗口中打开该菜单以关注它。这很容易成为任务的一部分。我创建了一个window.open对象数组,其中包含一些用于任何菜单选项的键。

function menuWindows(index, URL){
    if (openedWindows.length < index){
        openedWindows.length = index;
    }
    if ((openedWindows[index] == undefined) || openedWindows[index].closed){
        openedWindows[index]= window.open(URL, index);
        setOpenedWindows();
    } else {
        openedWindows[index].focus();
    }
}

我的想法是将这个数组存储在cookie中,然后在检查之前已经有一个打开的窗口从cookie加载数组。问题是当我尝试将该数组存储在cookie中时。我的函数的第一个版本存储数组在cookie中打开了窗口:

function setOpenedWindows(){
    $.cookie('openedWindows', JSON.stringify(openedWindows));
}

在浏览器控制台中,错误是:“将循环结构转换为JSON”。 经过一次镜头搜索后,我找到了这个post,我的第二个版本的商店功能是:

function setOpenedWindows(){
    var cache = [];
    var ow = JSON.stringify(openedWindows, function(key, value) {
        if (typeof value === 'object' && value !== null) {
            if (cache.indexOf(value) !== -1) {
                // Circular reference found, discard key
                return;
            }
            // Store value in our collection
            cache.push(value);
        }
        return value;
    });
    cache = null; // Enable garbage collection
    $.cookie("openedWindows", ow);
}

现在我有这个错误:“未捕获的RangeError:超出了最大调用堆栈大小”,我不知道该怎么做。

0 个答案:

没有答案