Hello all,
I have an app that needs to catch ctrl-P, page-up, page-down, and various other keys. Of course, most browsers pop up a print dialog when you hit ctrl-P, and other things when you hit the other keys. I tried adding some javascript code like this to my Default.html
document.onkeydown = function(e) { e = e || window.event; var c = e.which || e.keyCode; c = String.fromCharCode(c).toLowerCase(); if ( // ctrl-p/P (e.ctrlKey && (c == 80 || c == 112)) || // f-keys (c >= 112 && c <= 123) || // insert (c == 45) || // up, down, left, right (c >= 37 && c <=40) || // page up/down (c == 33 || c == 34) || // escape (c == 27) || // enter (c == 10 || c == 12) ) { e.preventDefault(); return false; } }
Which originally worked, but no longer works. Either a recent Mozilla or WiseJ update broke it, or maybe there’s a bug that I can’t see.
Has anyone else tried doing this?
Am I even on the right track, or is there a different, recommended way to do this?
Thanks,
David Muse
Ok, I got it to work, more or less. It looks like I have a problem with focus now, but I should be able to resolve that.
Thanks!
I just tried with this.Accelerators = new Keys[] { Keys.Control | Keys.P }; and I can catch Ctrl-P. Wisej will automatically block the browser from processing the accelerator.
The issue maybe that you are registering the accelerator on a Form and then pressing Ctrl-P when the form is not active or doesn’t contain the focus. Wisej will process the accelerator only if the keydown is generated by a child widget, otherwise a form would handle accelerators meant for another form.
If you place a main page you can handle accelerators when the user clicks on a blank area. Or use a desktop and register the accelerators there. If the same accelerator is registered in a form and on the parent desktop (or page) and the user presses Ctrl-P while on the form, the accelerator will only be processed by the form that contains the focus.
To debug in the browser, use F12 and place a break in wisej.js __onAccelerator: function (e) {…
HTH
Best,
Luca
Yes. Accelerators generally work. I can catch a P, for example, but not a ctrl-P. I assume this is because the browser is catching it before WiseJ. Am I correct in assuming that? And, if so, am I on the right track to prevent the browser from catching it?
Did you try the Accelerators property on the main page or on form?
Please login first to submit.