2015-02-25 15 views
6

Sto scrivendo un editor HTML personalizzato. L'utente può modificare un intero contenuto HTML e le modifiche verranno aggiornate in DOM. Abbiamo un'opzione per annullare tutte le modifiche.Annulla modifiche dom in JS

Logic:

clonare un intero contenitore prima di effettuare il cambiamento e applicare di nuovo.

Svantaggi:

  1. Memorizzazione di un enorme variabile nella memoria js.

  2. E applicando nuovamente le modifiche, un dom ridisegnerà tutto.

Esiste un modo per ottenere lo stesso ?.

+2

poiché si utilizza jquery, perché non memorizzare la dom clonata come stringa, quindi utilizzare '.html()' per reinserirla. in questo modo memorizzi solo stringhe piuttosto che frammenti di dom. – atmd

+0

la memorizzazione di stringhe html non richiede molta memoria ed è molto probabile che tu invii al server in ogni caso – charlietfl

+0

contentSupporto per pagine editabili che annullano i comandi, ma non so quanto sia buono il supporto del browser per questo è – the8472

risposta

0

utilizzare l'archiviazione sul web per mantenere la storia DOM.

Immaginate di voler annullare le ultime tre azioni eseguite. Non dovresti salvarlo in memoria perché puoi perdere informazioni su un aggiornamento della pagina. E davvero non sai se questa azione verrà utilizzata per salvare in memoria.

È possibile utilizzare la memoria Web con la compressione dei dati per mantenere la più piccola quantità di dati.

2

La tua domanda è molto utile. Non so quale sia il modo ottimale di gestire questa situazione, ma so che c'è lo Command Design Pattern che potrebbe funzionare in questo caso. Con Command Design Pattern puoi annullare eventi che sono stati salvati nel tuo programma. A mio avviso, il trucco per usare Command Design Pattern è che è necessario avere funzioni che facciano la cosa opposta quando è necessario annullare qualcosa. Ad esempio, se è necessario annullare il risultato della funzione aggiungi, è necessario avere la funzione sottrazione. Per la funzione di disegno è necessario avere una funzione di cancellazione/cancellazione. Ecco JavaScript example.

Problemi correlati