all tests pass in IE8!
[dygraphs.git] / mochikit_v14 / examples / key_events / key_events.js
1 /*
2
3 Key Events: A Really Simple Key Handler
4
5 */
6
7 KeyEvents = {
8 handled: false,
9 handleF1: function() {
10 replaceChildNodes('specialMessage', 'You invoked the special F1 handler!');
11 },
12 handleEscape: function() {
13 replaceChildNodes('specialMessage', 'You invoked the special Escape handler!');
14 },
15 updateModifiers: function(e) {
16 var modifiers = e.modifier();
17 replaceChildNodes('shift', modifiers.shift);
18 replaceChildNodes('ctrl', modifiers.ctrl);
19 replaceChildNodes('alt', modifiers.alt);
20 replaceChildNodes('meta', modifiers.meta);
21 }
22 };
23
24 KeyEvents.specialKeyMap = {
25 'KEY_F1': KeyEvents.handleF1,
26 'KEY_ESCAPE': KeyEvents.handleEscape
27 };
28
29 connect(document, 'onkeydown',
30 function(e) {
31 if (getElement('stopBox').checked == true) {
32 e.preventDefault();
33 }
34
35 // We're storing a handled flag to work around a Safari bug:
36 // http://bugs.webkit.org/show_bug.cgi?id=3387
37 if (!KeyEvents.handled) {
38 var key = e.key();
39 var fn = KeyEvents.specialKeyMap[key.string];
40 if (fn) {
41 fn();
42 }
43 replaceChildNodes('onkeydown_code', key.code);
44 replaceChildNodes('onkeydown_string', key.string);
45 KeyEvents.updateModifiers(e);
46 }
47 KeyEvents.handled = true;
48 });
49
50 connect(document, 'onkeyup',
51 function(e) {
52 if (getElement('stopBox').checked == true) {
53 e.preventDefault();
54 }
55
56 KeyEvents.handled = false;
57 var key = e.key();
58 replaceChildNodes('onkeyup_code', key.code);
59 replaceChildNodes('onkeyup_string', key.string);
60 KeyEvents.updateModifiers(e);
61 });
62
63 connect(document, 'onkeypress',
64 function(e) {
65 if (getElement('stopBox').checked == true) {
66 e.preventDefault();
67 }
68
69 var key = e.key();
70 replaceChildNodes('onkeypress_code', key.code);
71 replaceChildNodes('onkeypress_string', key.string);
72 KeyEvents.updateModifiers(e);
73 });
74
75 connect(window, 'onload',
76 function() {
77 var elems = getElementsByTagAndClassName("A", "view-source");
78 var page = "key_events/";
79 for (var i = 0; i < elems.length; i++) {
80 var elem = elems[i];
81 var href = elem.href.split(/\//).pop();
82 elem.target = "_blank";
83 elem.href = "../view-source/view-source.html#" + page + href;
84 }
85 });