- PR -

WEBページでのショートカットキー割り当てについて

1
投稿者投稿内容
未記入
大ベテラン
会議室デビュー日: 2008/07/11
投稿数: 182
投稿日時: 2008-09-13 12:00
度々失礼します。

WEBページにショートカットキーを割り当てたいのですが、Javascript(dojo1.1)で行いたいと思ってます。ブラウザのショートカットもあり微妙ですが・・。
現在、サンプルでこんなのを見つけました。

<script type="text/javascript">
<!--
dojo.addOnLoad(init);

// ショートカットキー
function init() {
dojo.connect(dojo.byId("body"), "onkeypress", function(e) {
// (1) イベントオブジェクトのkeyCharに、押されたキーが格納されている
var keyChar = e.keyChar;
// keyCharが空の場合は、特殊なキー
if (keyChar == "") {
// (2) dojo.keysの定数と比較すればキーの種類が判明する
for (var k in dojo.keys) {
if (dojo.keys[k] == e.keyCode) {
keyChar = k;
}
}
}

if (e.ctrlKey == true && keyChar == "d") {
alert("Ctrl+D:削除");
}
if (e.ctrlKey == true && keyChar == "c") {
alert("Ctrl+C:コピー");
}
if (e.ctrlKey == true && keyChar == "v") {
alert("Ctrl+V:ペースト");
}

// (3) イベントにおけるデフォルトの振る舞いを止め、
// イベントの伝播を阻止する
e.preventDefault();
e.stopPropagation();
})
}
//-->
</script>

このサンプルは元々input type="text"だったもので(bodyにはonkeypressイベントが無い)すが、何とかアクティブウインドウ時にはショートカットを効かせたいと思ってます。このままやった場合、FireFoxでは感知しましたが、他ブラウザでは感知できませんでした(イベントが無いので当然ですが・・)。

お分かりになる方いましたら、アドバイスよろしくお願いします。

[ メッセージ編集済み 編集者: 未記入 編集日時 2008-09-13 12:01 ]
未記入
大ベテラン
会議室デビュー日: 2008/07/11
投稿数: 182
投稿日時: 2008-09-16 10:43
自己解決です。

dojo.connect(dojo.body(), "onkeypress", function(e) {

なお、SaffariはCtrl+Cが既にブラウザのショートカットキーに登録されているようで効きませんでした。クロスブラウザでは全ブラウザに共通しないキーの割り当てが必要層です(当たり前ですが・・)。
1

スキルアップ/キャリアアップ(JOB@IT)