Add some temporary test/experiment files.
[odfkit:webodf.git] / webodf / misctests / carettest.html
1 <html>
2  <head>
3   <title></title>
4  </head>
5  <body onload="test()">
6   <script>
7 function init() {
8     var p = document.createElement("p");
9     p.appendChild(document.createTextNode("MMMMM MMMMM MMMMM MMMMM MMMMM"));
10     p.style.width = "5em";
11     p.style.border = "1px solid black";
12 //    p.contentEditable = true;
13     document.body.insertBefore(p, null);
14     return p;
15 }
16 function listenEvent(eventTarget, eventType, eventHandler) {
17     if (eventTarget.addEventListener) {
18         eventTarget.addEventListener(eventType, eventHandler, false);
19     } else if (eventTarget.attachEvent) {
20         eventType = "on" + eventType;
21         eventTarget.attachEvent(eventType, eventHandler);
22     } else {
23         eventTarget["on" + eventType] = eventHandler;
24     }
25 }
26 function simulateKeyEvent(target, type, keyCode) {
27     var customEvent = null,
28         bubbles = true,
29         cancelable = true,
30         view = window,
31         ctrlKey = false,
32         altKey = false,
33         shiftKey = false,
34         metaKey = false,
35         charCode = keyCode;
36     if (document.createEvent) {
37         try {
38             customEvent = document.createEvent("KeyEvents");
39             customEvent.initKeyEvent(type, bubbles, cancelable, view, ctrlKey,
40                 altKey, shiftKey, metaKey, keyCode, charCode);
41         } catch (ex) {
42             try {
43                 customEvent = document.createEvent("Events");
44             } catch (uierror) {
45                 customEvent = document.createEvent("UIEvents");
46             } finally {
47                 customEvent.initEvent(type, bubbles, cancelable);
48                 customEvent.view = view;
49                 customEvent.altKey = altKey;
50                 customEvent.ctrlKey = ctrlKey;
51                 customEvent.shiftKey = shiftKey;
52                 customEvent.metaKey = metaKey;
53                 customEvent.keyCode = keyCode;
54                 customEvent.charCode = charCode;
55             }
56         }
57         target.dispatchEvent(customEvent);
58     } else {
59         alert('ze problem');
60     }
61 }
62 function moveDown(target) {
63     var evt;// = document.createEvent("KeyboardEvent");
64 //    evt.initKeyEvent("keypress", true, true, null, false, false, false, false, 40, 0);
65 //    target.dispatchEvent(evt);
66 /*
67     evt = document.createEvent("KeyboardEvent");
68     //evt = document.createEvent("KeyEvents");
69     evt.initKeyEvent("keypress", true, true, target.ownerDocument.defaultView, false, false, false, false, 9, 0);
70     target.dispatchEvent(evt);
71 */
72                 evt = document.createEvent("KeyboardEvent");
73                 evt.initKeyEvent("keypress", true, true, null, false, false, false, false, 0x23, 0);
74                 target.dispatchEvent(evt);
75
76 }
77 function moveDownOpera(target) {
78     var evt = document.createEvent("UIEvents");
79     evt.initUIEvent("keypress", true, true, window, 1);
80     target.keyCode = 8;
81     target.charCode = 0;
82     target.dispatchEvent(evt);
83 alert(evt);
84 }
85
86 function mouseclick() {
87     var selection = window.getSelection(),
88         r = selection.getRangeAt(0);
89     alert(r.startOffset);
90 }
91
92 function test() {
93     var p = init(),
94         selection = window.getSelection(),
95         range;
96
97     // put caret at the start of the document
98     selection.removeAllRanges();
99     range = p.ownerDocument.createRange();
100     range.setStart(p.firstChild, 8);
101     range.collapse(true);
102     selection.addRange(range);
103
104     listenEvent(document, "keydown", show);
105     listenEvent(document, "mouseup", mouseclick);
106
107     // move the caret down
108     if (selection.modify) {
109         selection.modify("move", "forward", "line");
110     } else {
111 //        moveDown(p);
112         moveDownOpera(p);
113 //        simulateKeyEvent(p, "keypress", 40);
114 //        simulateKeyEvent(p, "keypress", 39);
115 //        simulateKeyEvent(p, "keypress", 69);
116 var t = "";
117 for (var i in selection) {
118  t += i + " ";
119 }
120 //alert(t);
121     }
122     alert("'" + selection.getRangeAt(0).startOffset + "' ");
123
124 }
125 function show(e) {
126 var t = "";
127 for (var i in e) {
128  t += i + " ";
129 }
130 //alert(t);
131     alert("code: " + e.charCode + " key: " + e.keyCode + ' ');
132 }
133   </script>
134  </body>
135 </html>