jQuery でブラウザの ctrl キーの制御をしようとして苦労するのが、ブラウザの違いと
各キーの対応状況、
例えば、印刷目的で使う ctrl + P これを抑制したい場面は、流出を防ぎたい、
とりあえず簡易な方法としてある。
'p'キーコード値=80 に対して、以下の jQueryのコードは、
$(document).bind("keydown", function(e){
if (e.ctrlKey && e.keyCode==80){
return false;
}
});
});
Chrome で ctrl+P を抑制できても、IE10では抑制できない。
IE10で ctrl+P を抑制するには、以下のようにする。
(function scriptInitScript(){
document.attachEvent("onkeydown", function handleKeyDown(event){
if (event.ctrlKey){
switch(event.keyCode){
case 80: // ctrl+p
event.keyCode = 0;
return false;
}
}
});
}());
でもこの document.attachEvent の書き方では、Chrome では動かず、抑制ができない。。
他の制御ctrlキー、 コピー、Paste、全選択、新規タブ開く、等を合わせて、書くと、、、(FireFoxを相手にしてなくて申し訳ないのだが。。。)
<script type="text/javascript" src="xxxxx/js/jquery-2.0.3.min.js"></script>
<script type="text/javascript">
$(function(){
$(document).bind("keydown", function(e){
if (e.ctrlKey){
switch(e.keyCode){
case 65: // ctrl+a
case 67: // ctrl+c
case 78: // ctrl+n
case 80: // ctrl+p
case 83: // ctrl+s
case 84: // ctrl+t
case 86: // ctrl+v
case 87: // ctrl+w
case 88: // ctrl+x
return false;
break;
}
}
});
// for IE
(function scriptInitScript(){
document.attachEvent("onkeydown", function handleKeyDown(event){
if (event.ctrlKey){
switch(event.keyCode){
case 65: // ctrl+a
case 67: // ctrl+c
case 78: // ctrl+n
case 80: // ctrl+p
case 83: // ctrl+s
case 84: // ctrl+t
case 86: // ctrl+v
case 87: // ctrl+w
case 88: // ctrl+x
event.keyCode = 0;
return false;
}
}
});
}());
});
</script>
このスクリプトは、ctrl + T , N , W は、IE10で抑制できたが、chrome では、抑制できない。
https://code.google.com/p/chromium/issues/detail?id=33056