Re: Automatic DOM transactions in UndoManager

For the simplicity, I would like to keep the current spec, and let that
transaction fail. Any opinions?

On Mon, Aug 6, 2012 at 6:03 PM, Sukolsak Sakshuwong <sukolsak@google.com>wrote:

> Should we be able to revert the following transaction?
>
> <!DOCTYPE html>
> <html>
> <body>
> <div id="a">Hello</div>
> <script>
> var a = document.getElementById("a");
>
> document.undoManager.transact({
>         "executeAutomatic": function () {
>                 var b = document.createElement("div");
>                 b.appendChild(a);
>         }
> });
>
> document.undoManager.undo();
> </script>
> <body>
> </html>
>
> Note that there are two DOM changes occurring inside the
> executeAutomatic function:
> 1. "a" is removed from its parent.
> 2. "a" is added as a child of "b".
>
> Only the first DOM change is recorded. The second DOM change is not
> recorded because "b" is not a descendant of the undo scope host, which
> is the document in this case.
>
> Therefore, only the first DOM change will be reverted. However,
> according to the spec
> (
> http://dvcs.w3.org/hg/undomanager/raw-file/tip/undomanager.html#reverting-dom-changes
> ),
> we can't revert it because a's parent is not null. Thus, "a" will not
> be added back to the document.
>
>
>

Received on Sunday, 12 August 2012 09:21:02 UTC