我想在本地保存一个具有循环引用的对象。我有哪些选择?
我的第一个想法是使用 HTML5 本地存储,但由于循环引用,我无法对这个对象进行字符串化。
具体来说,我正在尝试保存当前选择的 DOMSelection 对象。
例子:
var sel = window.getSelection();
var selstring = JSON.stringify(sel); // Breaks here ...
localStorage.setItem("selection",selstring);
我现在可以让 stringify 工作的唯一方法是忽略某些对象,如下所示:
var selstring = JSON.stringify(sel,function(k,v){
if( k=="anchorNode" ||
k=="baseNode" ||
k=="extentNode" ||
k=="focusNode") return undefined;
return v;
});
但这给我留下了一个相当空的 DOMSelection 对象,这不足以满足我的需要。
有没有其他方法可以保存这个对象?唯一的要求是它在移动 safari 中运行,其他任何东西都可以。解决方案可以是 javascript 或 jquery(或任何其他 js lib,如果需要)。
感谢您的任何帮助,您可以提供。