我想捕获浏览器上的Ctrl-R或F5快捷方式,以防止浏览器刷新,而是执行自定义刷新.
我能够在Safari和FF上捕获Ctrl-R:
- document.onkeypress = function(e){
- if ((e.ctrlKey || e.MetaKey) && e.keyCode == 114) // Ctrl-R
- e.preventDefault();
- }
但是这并不适用于IE.有没有办法在IE上这样做?
更新:对于那些正在问我为什么这样做的人,首先我只是想做一个自定义的应用程序刷新,但是想避免有一个“刷新”按钮,因为我有点不鼓励使用刷新(我们有一个完整的页面flex应用).我们最终转向F8,因为F5太难以在所有浏览器上工作.
解决方法
打开JavaScript
http://www.openjs.com/scripts/events/keyboard_shortcuts/
对于某些键(F1,F4),您必须打开一个没有地址栏的新的浏览器窗口.
例
打开一个新窗口,没有装饰:
- window.open( 'webpage.html','TLA','toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=yes,width=800,height=665' );
JavaScript使用库:
- var FALSE_FUNCTION = new Function( "return false" );
- /**
- * Called to disable F1,F3,and F5.
- */
- function disableShortcuts() {
- // Disable online help (the F1 key).
- //
- document.onhelp = FALSE_FUNCTION;
- window.onhelp = FALSE_FUNCTION;
- // Disable the F1,F3 and F5 keys. Without this,browsers that have these
- // function keys assigned to a specific behavIoUr (i.e.,opening a search
- // tab,or refreshing the page) will continue to execute that behavIoUr.
- //
- document.onkeydown = function disableKeys() {
- // Disable F1,F3 and F5 (112,114 and 116,respectively).
- //
- if( typeof event != 'undefined' ) {
- if( (event.keyCode == 112) ||
- (event.keyCode == 114) ||
- (event.keyCode == 116) ) {
- event.keyCode = 0;
- return false;
- }
- }
- };
- // For good measure,assign F1,and F5 to functions that do nothing.
- //
- shortcut.add( "f1",FALSE_FUNCTION );
- shortcut.add( "f3",FALSE_FUNCTION );
- shortcut.add( "f5",FALSE_FUNCTION );
- }
inside webpage.html:
- <body onload="disableShortcuts();">