JQuery и HTML5 DOM меняют функцию UNDO - PullRequest
0 голосов
/ 10 марта 2010

У меня есть контейнер div, в котором можно перетаскивать несколько пролетов. Я хочу построить функцию UNDO для них. Я думаю на:

  1. при изменении атрибутов span (position, css) скрипт обнаруживает изменение DOM
  2. изменение DOM сохраняется через HTML5 localStorage
  3. Когда вызывается функция UNDO, последняя версия DOM заменяет текущую.

У меня есть базовый код localStorage, который будет записывать последнее состояние DOM:

$('#undo').live('click', function() {

var testObject = $('#container').html();

// Put the object into storage
localStorage.setItem('testObject', JSON.stringify(testObject));

// Retrieve the object from storage
var retrievedObject = localStorage.getItem('testObject');

alert( retrievedObject );
// retrievedObject should now replace the current DOM

});
});

сейчас этот код просто берет текущий DOM и сохраняет его. Предупреждение отображает то, что находится в местном хранилище. Я, вероятно, должен попытаться сохранить несколько состояний DOM и поместить их в переменные. После этого на каждом откате удалить одну переменную ... Я не уверен, что это способ сделать это.

Есть какие-либо входы на этот? Спасибо

1 Ответ

0 голосов
/ 10 марта 2010

Во-первых, сосредоточив внимание на вашем коде: я думаю, что он достаточно правильный и должен выполнять свою работу. В конце концов вы просто помещаете строку в localStorage и получаете ее обратно.

Теперь несколько мыслей:

  • Что такое "html" в "#container"? Если это просто куча строк, хорошо. В противном случае при каждом «восстановлении» вы перестраиваете эту ветвь DOM. Если это «тяжело» или нет, это зависит от того, что именно вы делаете.
  • Почему вы хотите использовать localStorage? То, что находится в localStorage, является локальным для браузера, в котором он создан. Это означает, что ваша функция UNDO будет «невозможна», если пользователи откроют ту же страницу из другого экземпляра браузера.
  • Вы уверены, что UNDO по умолчанию браузера недостаточно для вас? Но я думаю, что нет, и я предполагаю, что вы НЕ удаляете вещи, которые просто включают в себя некоторые " или"

Собираетесь ли вы реализовать «стек» операций, которые могут быть отменены? Если вы сделаете это было бы круто;)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...