キーワード†
- JavaScript
- jQuery
概要†
Ctrl+Cなどのキー入力を抑止したいというユーザーからの要望を抑えられなかったときのメモです。
方法†
document.onkeydown = function(e) { var keycode; var ctrl; var shift; var prevent = null; // for something else IE if (e != null) { keycode = e.which; ctrl = typeof e.modifiers == 'undefined' ? e.ctrlKey : e.modifiers & Event.CONTROL_MASK; shift = typeof e.modifiers == 'undefined' ? e.shiftKey : e.modifiers & Event.SHIFT_MASK; prevent = function() { e.which = 0; e.preventDefault(); e.stopPropagation(); }; } // for IE else { keycode = window.event.keyCode; ctrl = window.event.ctrlKey; shift = window.event.shiftKey; prevent = function() { window.event.keyCode = 0; window.event.returnValue = false; window.event.cancelBubble = true; }; } // prevent var keychar = String.fromCharCode(keycode).toUpperCase(); if ( (ctrl && keychar == 'C') || (ctrl && keychar == 'X') || (ctrl && keychar == 'P') ) { prevent(); return false; } else { return true; } };
解説†
キーイベント取得の仕方が IE とそれ以外で別の方法を採るようです。
イベントをなかったことにする記述はいろいろやってとにかくダメになるようにしました。
- キーコードに0を当てる
- イベントを操作する
- falseを返却する