Toon posts:

Designmode=on undo list stopen en starten.

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hoi iedereen,

Ik zit met een probleem. Ik heb een wysiwyg etitor gebouwd.
Hierbij half gebruik gemaakt van de standaard microfosoft commands (executeCommand) en half zelf dingen bijgebouwd. (samen voegen van tabelcellen bijv).
Nou wil ik eigenlijk dat de sommige dingen die ik zelf heb gemaakt niet terug gedraaid kunnen worden (d.m.v. ctl + z)
Omdat daar meerdere dingen tegelijk gebeuren. als je daar de helft van terug draaid krijg je hele foute tabellen bijv.

Iemand enig iedee hoe ik de aanmaak van items voor de undo lijst tijdelijk stop zet.
Een oplossing om zelf de undo list te maken is niet werkbaar.

mvg,
Gerrit-Jan

Verwijderd

Verwijderd schreef op 23 oktober 2004 @ 16:51:
Hoi iedereen,

Ik zit met een probleem. Ik heb een wysiwyg etitor gebouwd.
Ik ken nog iemand ;)
Hierbij half gebruik gemaakt van de standaard microfosoft commands (executeCommand) en half zelf dingen bijgebouwd. (samen voegen van tabelcellen bijv).
Nou wil ik eigenlijk dat de sommige dingen die ik zelf heb gemaakt niet terug gedraaid kunnen worden (d.m.v. ctl + z)
Omdat daar meerdere dingen tegelijk gebeuren. als je daar de helft van terug draaid krijg je hele foute tabellen bijv.

Iemand enig iedee hoe ik de aanmaak van items voor de undo lijst tijdelijk stop zet.
Een oplossing om zelf de undo list te maken is niet werkbaar.

mvg,
Gerrit-Jan
Okey, 't zit zo. De undo en redo functie die standaard geleverd wordt via een execCommand is niet je-van-het. Ik zou kiezen voor meer controle over je undo en redo lijst. Daarom moet je dus een eigen history object maken waarbij je zelf alles registreerd en kan terugdraaien.
De standaard undo redo lijst wordt namelijk leeggegooid wanneer je bijvoorbeeld opnieuw data in het frame zet.

Verwijderd

Topicstarter
Bedankt voor je reactie. Maar ik neem aan dat je niet steeds als er wat veranderd de complete body.innerHTML opslaat?

Zo nee heb je wat hints (links of voorbeelden) hoe ik dat goed zou kunnen oplossen ?

mvg,
Gerrit-Jan

Verwijderd

Ik zeg je hoe je het moet aanpakken, ga je me vragen of ik meteen wat code wil geven. Nou nee.

Je moet dus een history object maken.

code:
1
2
3
4
5
NextAvenue.prototype.history.save();
NextAvenue.prototype.history.undo();
NextAvenue.prototype.history.canUndo();
NextAvenue.prototype.history.canRedo();
NextAvenue.prototype.history.redo();

Dit zijn de functies die ik heb geschreven voor de class. Op bepaalde momenten moet je dus de inhoudt van het frame ophalen en in een Array pushen die maximaal X elementen kan bevatten. Zo kan je zelf kiezen wat je wil opslaan en wanneer.