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(){
}
js_runonstart('scrollToMarker()');
js_runonstart('focusMarker()');
// init hotkeys - must have been done after init of toolbar
js_runonstart('initializeHotkeys()');
// end output buffering and get contents
$js = ob_get_contents();
......
......@@ -27,6 +27,9 @@ function Hotkeys() {
* (at anchor elements and input elements [type="submit"]) and registers
* appropriate shortcuts.
*
* Secondly, initialization registers listeners on document to catch all
* keyboard events.
*
* @author Marek Sacha <sachamar@fel.cvut.cz>
*/
this.initialize = function() {
......@@ -39,7 +42,7 @@ function Hotkeys() {
t.each(anchors, function(a) {
if (a.accessKey != "") {
t.addShortcut(t.modifier + '+' + a.accessKey, function() {
window.location.href = a.href;
a.click();
});
}
});
......@@ -50,12 +53,41 @@ function Hotkeys() {
*/
var inputs = document.getElementsByTagName("input");
t.each(inputs, function(i) {
if (i.type == "submit") {
if (i.type == "submit" && i.accessKey != "") {
t.addShortcut(t.modifier + '+' + i.accessKey, function() {
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() {
};
}
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();
hotkeys.initialize();
addEvent(document,'keyup',function (e) {
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
}
\ 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