Как сохранить объект с круговыми ссылками?

Я хочу сохранить локальный объект, который имеет круговые ссылки. Каковы мои варианты?

Моя первая мысль использовала локальное хранилище HTML5, но я не могу застраивать этот объект из-за круговых ссылок.

В частности, я пытаюсь сохранить объект DOMSELIONECTE о текущем выделении.

Пример:

  var sel = window.getSelection();
  var selstring = JSON.stringify(sel); // Breaks here ...
  localStorage.setItem("selection",selstring);

Единственный способ, которым я мог бы получить strontify работать сейчас, это игнорируя определенные объекты, такие как так:

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, если это нужно быть).

Спасибо за любую помощь, которую вы можете предоставить.

7
задан nebs 5 October 2015 в 02:42
поделиться