JavaScript/HumanInterfaceDeviceEventControl
をテンプレートにして作成
Search in
this wiki
and
or
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
]
開始行:
Webページ上でのマウスクリックやキー押下イベントを制御し...
*** HIDEventControl.js [#s954881f]
- テキスト入力エレメント以外では、コンテキストメニューを...
- マウスクリック制御のスケルトンを提供。(必要に応じて処理...
- ブラウザショートカットキーの無効化制御。
- 本体 : &ref(http://jomura.net/archive/2010/HIDEventCont...
- 本体(min) : &ref(http://jomura.net/archive/2010/HIDEven...
////////////////////////////////////////////////////////...
//
// Human Interface Device Event Control
//
// @author K.Jomura ( kazuhiko@jomura.net http://jomura....
// @author $LastChangedBy$
// @since 2009.09.16
// @version 2010.08.13 lighten
// 2010.04.02 enable to use on frame
// 2010.03.12 Disabled [Space]Key
// 2009.10.05 version 1 ...
////////////////////////////////////////////////////////...
/*
* 必要に応じて本ファイルの内容をcommon.js等に取り込んで...
*/
/*
* コンテキストメニュー制御スクリプト
*/
//bodyオブジェクトはload後でないと取得できないため、load...
addEvent(window, "load", set_oncontextmenu);
function set_oncontextmenu() {
var bodys = document.getElementsByTagName("body");
if (bodys.length != 1) {
return;
}
var body = bodys[0];
if ('\v' == 'v') {
body.oncontextmenu = enableContextMenu; // for IE
} else {
body.setAttribute("oncontextmenu",
"return enableContextMenu();"); // forFirefox
}
}
function enableContextMenu() {
var obj = document.activeElement;
// フォーカスが当たっていない場合は無効化
if (obj != null && obj.type != null) {
// TEXTAREAもしくはINPUTでtypeがTEXTかPASSWORDの場合は...
if (obj.tagName.toUpperCase() == 'TEXTAREA'
|| (obj.tagName.toUpperCase() == 'INPUT'
&& (obj.type.toUpperCase() == 'TEXT'
|| obj.type.toUpperCase() == 'PASSWORD'))) {
if (!obj.readOnly) {
return true;
}
}
}
return false;
}
/*
* マウスクリック制御スクリプト
*/
/*
// 画面でマウスがクリックされた時のイベントハンドラー
addEvent(document, "mousedown", mouseHook);
addEvent(document, "mouseup", mouseHook);
function mouseHook(e) {
var _event;
if ('\v' == 'v') {
_event = event; // for IE
} else {
_event = e; // for Firefox
}
// クリックされたタイミングでフォーカスされたエレメント...
var obj = document.activeElement;
if (_event.button & 2) // 右クリック
{
// 無効化
// return disableMouseEvent(_event);
}
// ブラウザ標準の動作
return true;
// マウスイベントを無効化する。
function disableMouseEvent(_event) {
_event.cancelBubble = true; // イベントの通知を禁止
alert('右クリックメニューは使用できません。'); // 右ク...
return false; // その他イベントを禁止
}
}
*/
/*
* キー制御スクリプト
*/
// bodyオブジェクトはload後でないと取得できないため、loa...
addEvent(window, "load", set_onkeydown);
function set_onkeydown() {
if ('\v' == 'v') {
addEvent(document.body, "keydown", keyHook); // for IE
} else {
document.onkeydown = keyHook; // for Firefox
}
}
function keyHook(e) {
var _event;
if ('\v' == 'v') {
_event = event; // for IE
} else {
_event = e; // for Firefox
}
// キーが押されたタイミングでフォーカスされたエレメント...
var obj = document.activeElement;
// 以下、キー毎に処理を行う
// Alt + F4 ,ESCについてはJavaScriptでの防止は不可。
// Ctrlキー
if (_event.ctrlKey) {
switch (_event.keyCode) {
case 66: // Ctrl + B 標準動作:[お気に入りの整理] ダイ...
case 68: // Ctrl + D 標準動作:現在のページを[お気に入...
case 69: // Ctrl + E 標準動作:検索バーを表示する。
case 72: // Ctrl + H 標準動作:履歴バーを表示する。
case 73: // Ctrl + I 標準動作:お気に入りバーを表示す...
case 76: // Ctrl + L 標準動作:新しくファイルを開く。
case 78: // Ctrl + N 標準動作:新しいウィンドウを表示...
case 79: // Ctrl + O 標準動作:新しくファイルを開く。
case 82: // Ctrl + R 標準動作:現在の Web ページを更新...
case 83: // Ctrl + S 標準動作:現在のページを保存する...
case 87: // Ctrl + W 標準動作:現在のウィンドウを閉じ...
return disableKeyEvent(_event);
}
}
// Altキー
if (_event.altKey) {
switch (_event.keyCode) {
case 36: // Alt + Home 標準動作:ホーム ページに移動す...
case 37: // Alt + ← (左矢印) 標準動作:前のページに移...
case 39: // Alt + → (右矢印) 標準動作:次のページに移...
disableKeyEvent(_event);
if ('\v' == 'v') {
// IEはメッセージ表示をしないと無効化できない
disableKeyEventAlert();
}
return false;
}
}
switch (_event.keyCode) {
case 8:
// BackSpaceキー
// 標準動作:前のページに移動する。
// コントロールのタイプが取得できない場合にはアクショ...
if (obj != null && obj.type != null) {
// TEXTAREAもしくはINPUTでtypeがTEXTかPASSWORDの場合...
if (obj.tagName.toUpperCase() == 'TEXTAREA'
|| (obj.tagName.toUpperCase() == 'INPUT'
&& (obj.type.toUpperCase() == 'TEXT'
|| obj.type.toUpperCase() == 'PASSWORD'))) {
if (!obj.readOnly) {
return true;
}
}
}
return disableKeyEvent(_event);
break;
case 32:
// Spaceキー
// 標準動作:様々
// コントロールのタイプが取得できない場合にはアクショ...
if (obj != null && obj.type != null) {
// INPUTで、typeがTEXTかPASSWORDの場合は、標準動作
// TEXTAREAもしくはINPUTでtypeがTEXT,PASSWORD,CHECKBO...
// いずれかの場合は、標準動作
if (obj.tagName.toUpperCase() == 'TEXTAREA'
|| (obj.tagName.toUpperCase() == 'INPUT'
&& (obj.type.toUpperCase() == 'TEXT'
|| obj.type.toUpperCase() == 'PASSWORD'
|| obj.type.toUpperCase() == 'CHECKBOX'
|| obj.type.toUpperCase() == 'RADIO'))) {
if (!obj.readOnly) {
return true;
}
}
}
return disableKeyEvent(_event);
break;
case 13:
// Enterキー
// 標準動作:様々
// Do Nothing
break;
case 93:
// ContextMenuキー
// 標準動作:コンテキストメニューを表示する。
// Do Nothing
// body.oncontextmenuで制御するため、キー制御は不要。
break;
// ファンクションキー等
// ヘルプ表示以外のすべてのファンクションキーを無効化
case 113: // F2 標準動作:なし
case 114: // F3 標準動作:Googleツールバーの表示。
case 115: // F4 標準動作:以前入力したアドレスの一覧を...
case 116: // F5 標準動作:(Ctrl + F5)現在のページを更新...
case 117: // F6 標準動作:なし
case 118: // F7 標準動作:なし
case 119: // F8 標準動作:なし
case 120: // F9 標準動作:なし
case 121: // F10 標準動作:(Shift + F10)リンクのショ...
case 122: // F11 標準動作:ブラウザ ウィンドウの全画面...
case 123: // F12 標準動作:?
case 124: // F13 標準動作:?
case 125: // F14 標準動作:?
case 126: // F15 標準動作:?
case 127: // F16 標準動作:?
case 166: // ThinkPadの「戻る」 ※効かない
case 167: // ThinkPadの「進む」 ※効かない
return disableKeyEvent(_event);
}
// ブラウザ標準の動作
return true;
// キーイベントを無効化する。
function disableKeyEvent(_event) {
if ('\v' == 'v') {
_event.keyCode = -1; // キーコードを無効化 (Firefoxに...
}
_event.cancelBubble = true; // イベントの通知を禁止
_event.returnValue = false;
return false;
}
// メッセージを表示してイベント処理実行を防止する。
function disableKeyEventAlert() {
alert("このショートカットキーは使用できません。");
}
}
function addEvent(elem, eventType, fn) {
if (elem.addEventListener) { // for W3C DOM
elem.addEventListener(eventType, fn, false);
} else if (elem.attachEvent) { // for IE
elem.attachEvent('on' + eventType, fn);
} else {
elem['on' + eventType] = fn;
}
}
- テスト用HTML : &ref(HIDEventControlTest.html);
終了行:
Webページ上でのマウスクリックやキー押下イベントを制御し...
*** HIDEventControl.js [#s954881f]
- テキスト入力エレメント以外では、コンテキストメニューを...
- マウスクリック制御のスケルトンを提供。(必要に応じて処理...
- ブラウザショートカットキーの無効化制御。
- 本体 : &ref(http://jomura.net/archive/2010/HIDEventCont...
- 本体(min) : &ref(http://jomura.net/archive/2010/HIDEven...
////////////////////////////////////////////////////////...
//
// Human Interface Device Event Control
//
// @author K.Jomura ( kazuhiko@jomura.net http://jomura....
// @author $LastChangedBy$
// @since 2009.09.16
// @version 2010.08.13 lighten
// 2010.04.02 enable to use on frame
// 2010.03.12 Disabled [Space]Key
// 2009.10.05 version 1 ...
////////////////////////////////////////////////////////...
/*
* 必要に応じて本ファイルの内容をcommon.js等に取り込んで...
*/
/*
* コンテキストメニュー制御スクリプト
*/
//bodyオブジェクトはload後でないと取得できないため、load...
addEvent(window, "load", set_oncontextmenu);
function set_oncontextmenu() {
var bodys = document.getElementsByTagName("body");
if (bodys.length != 1) {
return;
}
var body = bodys[0];
if ('\v' == 'v') {
body.oncontextmenu = enableContextMenu; // for IE
} else {
body.setAttribute("oncontextmenu",
"return enableContextMenu();"); // forFirefox
}
}
function enableContextMenu() {
var obj = document.activeElement;
// フォーカスが当たっていない場合は無効化
if (obj != null && obj.type != null) {
// TEXTAREAもしくはINPUTでtypeがTEXTかPASSWORDの場合は...
if (obj.tagName.toUpperCase() == 'TEXTAREA'
|| (obj.tagName.toUpperCase() == 'INPUT'
&& (obj.type.toUpperCase() == 'TEXT'
|| obj.type.toUpperCase() == 'PASSWORD'))) {
if (!obj.readOnly) {
return true;
}
}
}
return false;
}
/*
* マウスクリック制御スクリプト
*/
/*
// 画面でマウスがクリックされた時のイベントハンドラー
addEvent(document, "mousedown", mouseHook);
addEvent(document, "mouseup", mouseHook);
function mouseHook(e) {
var _event;
if ('\v' == 'v') {
_event = event; // for IE
} else {
_event = e; // for Firefox
}
// クリックされたタイミングでフォーカスされたエレメント...
var obj = document.activeElement;
if (_event.button & 2) // 右クリック
{
// 無効化
// return disableMouseEvent(_event);
}
// ブラウザ標準の動作
return true;
// マウスイベントを無効化する。
function disableMouseEvent(_event) {
_event.cancelBubble = true; // イベントの通知を禁止
alert('右クリックメニューは使用できません。'); // 右ク...
return false; // その他イベントを禁止
}
}
*/
/*
* キー制御スクリプト
*/
// bodyオブジェクトはload後でないと取得できないため、loa...
addEvent(window, "load", set_onkeydown);
function set_onkeydown() {
if ('\v' == 'v') {
addEvent(document.body, "keydown", keyHook); // for IE
} else {
document.onkeydown = keyHook; // for Firefox
}
}
function keyHook(e) {
var _event;
if ('\v' == 'v') {
_event = event; // for IE
} else {
_event = e; // for Firefox
}
// キーが押されたタイミングでフォーカスされたエレメント...
var obj = document.activeElement;
// 以下、キー毎に処理を行う
// Alt + F4 ,ESCについてはJavaScriptでの防止は不可。
// Ctrlキー
if (_event.ctrlKey) {
switch (_event.keyCode) {
case 66: // Ctrl + B 標準動作:[お気に入りの整理] ダイ...
case 68: // Ctrl + D 標準動作:現在のページを[お気に入...
case 69: // Ctrl + E 標準動作:検索バーを表示する。
case 72: // Ctrl + H 標準動作:履歴バーを表示する。
case 73: // Ctrl + I 標準動作:お気に入りバーを表示す...
case 76: // Ctrl + L 標準動作:新しくファイルを開く。
case 78: // Ctrl + N 標準動作:新しいウィンドウを表示...
case 79: // Ctrl + O 標準動作:新しくファイルを開く。
case 82: // Ctrl + R 標準動作:現在の Web ページを更新...
case 83: // Ctrl + S 標準動作:現在のページを保存する...
case 87: // Ctrl + W 標準動作:現在のウィンドウを閉じ...
return disableKeyEvent(_event);
}
}
// Altキー
if (_event.altKey) {
switch (_event.keyCode) {
case 36: // Alt + Home 標準動作:ホーム ページに移動す...
case 37: // Alt + ← (左矢印) 標準動作:前のページに移...
case 39: // Alt + → (右矢印) 標準動作:次のページに移...
disableKeyEvent(_event);
if ('\v' == 'v') {
// IEはメッセージ表示をしないと無効化できない
disableKeyEventAlert();
}
return false;
}
}
switch (_event.keyCode) {
case 8:
// BackSpaceキー
// 標準動作:前のページに移動する。
// コントロールのタイプが取得できない場合にはアクショ...
if (obj != null && obj.type != null) {
// TEXTAREAもしくはINPUTでtypeがTEXTかPASSWORDの場合...
if (obj.tagName.toUpperCase() == 'TEXTAREA'
|| (obj.tagName.toUpperCase() == 'INPUT'
&& (obj.type.toUpperCase() == 'TEXT'
|| obj.type.toUpperCase() == 'PASSWORD'))) {
if (!obj.readOnly) {
return true;
}
}
}
return disableKeyEvent(_event);
break;
case 32:
// Spaceキー
// 標準動作:様々
// コントロールのタイプが取得できない場合にはアクショ...
if (obj != null && obj.type != null) {
// INPUTで、typeがTEXTかPASSWORDの場合は、標準動作
// TEXTAREAもしくはINPUTでtypeがTEXT,PASSWORD,CHECKBO...
// いずれかの場合は、標準動作
if (obj.tagName.toUpperCase() == 'TEXTAREA'
|| (obj.tagName.toUpperCase() == 'INPUT'
&& (obj.type.toUpperCase() == 'TEXT'
|| obj.type.toUpperCase() == 'PASSWORD'
|| obj.type.toUpperCase() == 'CHECKBOX'
|| obj.type.toUpperCase() == 'RADIO'))) {
if (!obj.readOnly) {
return true;
}
}
}
return disableKeyEvent(_event);
break;
case 13:
// Enterキー
// 標準動作:様々
// Do Nothing
break;
case 93:
// ContextMenuキー
// 標準動作:コンテキストメニューを表示する。
// Do Nothing
// body.oncontextmenuで制御するため、キー制御は不要。
break;
// ファンクションキー等
// ヘルプ表示以外のすべてのファンクションキーを無効化
case 113: // F2 標準動作:なし
case 114: // F3 標準動作:Googleツールバーの表示。
case 115: // F4 標準動作:以前入力したアドレスの一覧を...
case 116: // F5 標準動作:(Ctrl + F5)現在のページを更新...
case 117: // F6 標準動作:なし
case 118: // F7 標準動作:なし
case 119: // F8 標準動作:なし
case 120: // F9 標準動作:なし
case 121: // F10 標準動作:(Shift + F10)リンクのショ...
case 122: // F11 標準動作:ブラウザ ウィンドウの全画面...
case 123: // F12 標準動作:?
case 124: // F13 標準動作:?
case 125: // F14 標準動作:?
case 126: // F15 標準動作:?
case 127: // F16 標準動作:?
case 166: // ThinkPadの「戻る」 ※効かない
case 167: // ThinkPadの「進む」 ※効かない
return disableKeyEvent(_event);
}
// ブラウザ標準の動作
return true;
// キーイベントを無効化する。
function disableKeyEvent(_event) {
if ('\v' == 'v') {
_event.keyCode = -1; // キーコードを無効化 (Firefoxに...
}
_event.cancelBubble = true; // イベントの通知を禁止
_event.returnValue = false;
return false;
}
// メッセージを表示してイベント処理実行を防止する。
function disableKeyEventAlert() {
alert("このショートカットキーは使用できません。");
}
}
function addEvent(elem, eventType, fn) {
if (elem.addEventListener) { // for W3C DOM
elem.addEventListener(eventType, fn, false);
} else if (elem.attachEvent) { // for IE
elem.attachEvent('on' + eventType, fn);
} else {
elem['on' + eventType] = fn;
}
}
- テスト用HTML : &ref(HIDEventControlTest.html);
ページ名: