Skip to content
Snippets Groups Projects
Commit 4062d3d5 authored by Marek Sacha's avatar Marek Sacha Committed by Andreas Gohr
Browse files

Reimplementation of Accesskeys in javascript (FS#1809), toolbar accesskyes fix.

parent 7ea8e592
No related branches found
No related tags found
No related merge requests found
...@@ -113,6 +113,8 @@ function js_out(){ ...@@ -113,6 +113,8 @@ function js_out(){
} }
js_runonstart('scrollToMarker()'); js_runonstart('scrollToMarker()');
js_runonstart('focusMarker()'); js_runonstart('focusMarker()');
// init hotkeys - must have been done after init of toolbar
js_runonstart('initializeHotkeys()');
// end output buffering and get contents // end output buffering and get contents
$js = ob_get_contents(); $js = ob_get_contents();
......
...@@ -27,6 +27,9 @@ function Hotkeys() { ...@@ -27,6 +27,9 @@ function Hotkeys() {
* (at anchor elements and input elements [type="submit"]) and registers * (at anchor elements and input elements [type="submit"]) and registers
* appropriate shortcuts. * appropriate shortcuts.
* *
* Secondly, initialization registers listeners on document to catch all
* keyboard events.
*
* @author Marek Sacha <sachamar@fel.cvut.cz> * @author Marek Sacha <sachamar@fel.cvut.cz>
*/ */
this.initialize = function() { this.initialize = function() {
...@@ -39,7 +42,7 @@ function Hotkeys() { ...@@ -39,7 +42,7 @@ function Hotkeys() {
t.each(anchors, function(a) { t.each(anchors, function(a) {
if (a.accessKey != "") { if (a.accessKey != "") {
t.addShortcut(t.modifier + '+' + a.accessKey, function() { t.addShortcut(t.modifier + '+' + a.accessKey, function() {
window.location.href = a.href; a.click();
}); });
} }
}); });
...@@ -50,12 +53,41 @@ function Hotkeys() { ...@@ -50,12 +53,41 @@ function Hotkeys() {
*/ */
var inputs = document.getElementsByTagName("input"); var inputs = document.getElementsByTagName("input");
t.each(inputs, function(i) { t.each(inputs, function(i) {
if (i.type == "submit") { if (i.type == "submit" && i.accessKey != "") {
t.addShortcut(t.modifier + '+' + i.accessKey, function() { t.addShortcut(t.modifier + '+' + i.accessKey, function() {
i.click(); i.click();
}); });
} }
}); });
/**
* Lookup all buttons with accesskey and register event -
* perform "click" on a button.
*/
var buttons = document.getElementsByTagName("button");
t.each(buttons, function(b) {
if (b.accessKey != "") {
t.addShortcut(t.modifier + '+' + b.accessKey, function() {
b.click();
});
}
});
/**
* Register listeners on document to catch keyboard events.
*/
addEvent(document,'keyup',function (e) {
return t.onkeyup.call(t,e);
});
addEvent(document,'keypress',function (e) {
return t.onkeypress.call(t,e);
});
addEvent(document,'keydown',function (e) {
return t.onkeydown.call(t,e);
});
}; };
/** /**
...@@ -247,19 +279,13 @@ function Hotkeys() { ...@@ -247,19 +279,13 @@ function Hotkeys() {
}; };
} }
addInitEvent(function(){ /**
* Init function for hotkeys. Called from js.php, to ensure hotkyes are initialized after toolbar.
* Call of addInitEvent(initializeHotkeys) is unnecessary now.
*
* @author Marek Sacha <sachamar@fel.cvut.cz>
*/
function initializeHotkeys() {
var hotkeys = new Hotkeys(); var hotkeys = new Hotkeys();
hotkeys.initialize(); hotkeys.initialize();
}
addEvent(document,'keyup',function (e) { \ No newline at end of file
return hotkeys.onkeyup.call(hotkeys,e);
});
addEvent(document,'keypress',function (e) {
return hotkeys.onkeypress.call(hotkeys,e);
});
addEvent(document,'keydown',function (e) {
return hotkeys.onkeydown.call(hotkeys,e);
});
});
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment