| <!DOCTYPE html> |
| <html> |
| <head> |
| <script> |
| function pad(str,length) |
| { |
| str = ""+str; |
| while (str.length < length) |
| str += " "; |
| return str; |
| } |
| |
| function performTest() |
| { |
| var ps = document.getElementsByTagName("P"); |
| var text1 = ps[0].firstChild; |
| var text2 = ps[1].firstChild; |
| |
| var positions = new Array(); |
| for (var i = 0; i <= text1.nodeValue.length; i++) |
| positions.push(new Position(text1,i)); |
| |
| for (var i = 0; i <= text2.nodeValue.length; i++) |
| positions.push(new Position(text2,i)); |
| |
| var origStrings = new Array(); |
| for (var i = 0; i < positions.length; i++) |
| origStrings.push(positions[i].toString()); |
| |
| Position_trackWhileExecuting(positions,function() { |
| DOM_moveCharacters(text1,4,8,text2,10,true,false); |
| }); |
| |
| var movedStrings = new Array(); |
| for (var i = 0; i < positions.length; i++) |
| movedStrings.push(positions[i].toString()); |
| |
| Position_trackWhileExecuting(positions,function() { |
| UndoManager_undo(); |
| }); |
| var undoneStrings = new Array(); |
| for (var i = 0; i < positions.length; i++) |
| undoneStrings.push(positions[i].toString()); |
| |
| var lines = new Array(); |
| for (var i = 0; i < positions.length; i++) { |
| var extra = ""; |
| if (undoneStrings[i] != origStrings[i]) |
| extra += " ***"; |
| lines.push(origStrings[i]+" -> "+ |
| pad(movedStrings[i],20)+" -> "+ |
| undoneStrings[i]+extra+"\n"); |
| } |
| return lines.join(""); |
| } |
| </script> |
| </head> |
| <body> |
| <p>one two three</p> |
| <p>four five six</p> |
| </body> |
| </html> |