?? eventlistener.js
字號(hào):
?<!--
// 2005.11.18 Ryo Ohara 判定対象に"password"を追加。
// readOnlyが指定されているオブジェクトは背景色を変更しないように修正。
// --------------------------------------------------<< event定義 >>
document.onkeydown = keydown;
document.onmousedown=mousedown;
document.oncontextmenu=InvalidValue;
document.onfocusin=focusin;
document.onfocusout=focusout;
document.onhelp=InvalidValue;
//????????????を認(rèn)識(shí)するように、この?????に?????を移す
self.focus();
// --------------------------------------------------<< 変數(shù)定義 >>
//
var ctlName; // focusin?focusout用Work
var deterKeys = new Array(); // Key抑止パターン格納配列
// --------------------------------------------------<< Key抑止パターン定義 >>
// 検索バーの表示
deterKeys[deterKeys.length] = new keySet(false,false,false,114); // F3キー押下
deterKeys[deterKeys.length] = new keySet(false,true,false,69); // Ctl + Eキー押下
// 現(xiàn)在のウィンドウを閉じる
deterKeys[deterKeys.length] = new keySet(true,false,false,115); // Alt + F4キー押下
deterKeys[deterKeys.length] = new keySet(false,true,false,87); // Ctl + Wキー押下
// 現(xiàn)在のページの更新
deterKeys[deterKeys.length] = new keySet(false,false,false,116); // F5キー押下
deterKeys[deterKeys.length] = new keySet(false,true,false,116); // Ctl + F5キー押下
deterKeys[deterKeys.length] = new keySet(false,false,true,116); // Shift + F5キー押下
deterKeys[deterKeys.length] = new keySet(false,true,false,82); // Ctl + Rキー押下
// 次のフレームに移動(dòng)
deterKeys[deterKeys.length] = new keySet(false,false,false,117); // F6キー押下
deterKeys[deterKeys.length] = new keySet(false,true,false,117); // Ctl + F6キー押下
deterKeys[deterKeys.length] = new keySet(false,false,true,117); // Shift + F6キー押下
// リンクのショートカットキー表示
deterKeys[deterKeys.length] = new keySet(false,false,true,121); // Shift + F10キー押下
// ページの最大表示
deterKeys[deterKeys.length] = new keySet(false,false,false,122); // F11キー押下
// ホームページへ移動(dòng)
deterKeys[deterKeys.length] = new keySet(true,false,false,36); // Alt + Homeキー押下
// [お?dú)荬巳毪辘握韂のダイアログ表示
deterKeys[deterKeys.length] = new keySet(false,true,false,66); // Ctl + Bキー押下
// 現(xiàn)在のページをお?dú)荬巳毪辘俗芳?deterKeys[deterKeys.length] = new keySet(false,true,false,68); // Ctl + Dキー押下
// ページ検索を行う
deterKeys[deterKeys.length] = new keySet(false,true,false,70); // Ctl + Fキー押下
// 履歴バー表示
deterKeys[deterKeys.length] = new keySet(false,true,false,72); // Ctl + Hキー押下
// お?dú)荬巳毪辚些`表示
deterKeys[deterKeys.length] = new keySet(false,true,false,73); // Ctl + Iキー押下
// 新しいファイルを開く
deterKeys[deterKeys.length] = new keySet(false,true,false,76); // Ctl + Lキー押下
deterKeys[deterKeys.length] = new keySet(false,true,false,79); // Ctl + Oキー押下
// 新しいウィンドウを開く
deterKeys[deterKeys.length] = new keySet(false,true,false,78); // Ctl + Nキー押下
// 現(xiàn)在のページまたはアクティブなフレームの印刷
deterKeys[deterKeys.length] = new keySet(false,true,false,80); // Ctl + Pキー押下
// 現(xiàn)在のページを保存
deterKeys[deterKeys.length] = new keySet(false,true,false,83); // Ctl + Sキー押下
// 次のページへ移動(dòng)
deterKeys[deterKeys.length] = new keySet(true,false,false,37); // Alt + →キー押下
// 前のページへ移動(dòng)
deterKeys[deterKeys.length] = new keySet(true,false,false,39); // Alt + ←キー押下
//
deterKeys[deterKeys.length] = new keySet(false,false,false,8); // Backspace + ←キー押下
/***********************************************************************************
* フォーカス取得時(shí)の処理
***********************************************************************************/
function focusin(ev) {
ev = window.event;
// focusout用uniqueID初期化
ctlName ="";
var activeElm = document.activeElement;
// ActiveObject判定
if (activeElm == null){
return;
}
// input type="text"用処理
if ((activeElm.type == "text" || activeElm.type == "password") && !activeElm.readOnly){
ctlName = activeElm.uniqueID;
activeElm.style.backgroundColor = 'pink';
}
return;
}
/***********************************************************************************
* フォーカスが無くなった時(shí)の処理
***********************************************************************************/
function focusout() {
var ev = window.event;
var ctlElm = document.all(ctlName);
if (ctlName != ""){
if ((ctlElm.type == "text" || ctlElm.type == "password") && !ctlElm.readOnly) {
ctlElm.style.backgroundColor = 'white';
}
}
ctlName ="";
return ;
}
/***********************************************************************************
* キーの組み合わせを格納する構(gòu)造體
* @param boolean Altキー押下 :true その他:false
* @param boolean Ctrlキー押下 :true その他:false
* @param boolean Shiftキー押下:true その他:false
* @param int 押下されたキーコード
***********************************************************************************/
function keySet(alt,ctrl,shift,key) {
this.alt = alt; // Altキー
this.ctrl = ctrl; // Ctrlキー
this.shift = shift; // Shiftキー
this.key = key; // Key
}
/***********************************************************************************
* キーボード入力抑止
***********************************************************************************/
function keydown() {
var elm = event.srcElement; // イベントが発生した要素
var alt = event.altKey; // Altキーが押下された
var ctrl = event.ctrlKey; // Ctrlキーが押下された
var shift = event.shiftKey; // Shiftキーが押下された
var key = event.keyCode; // 押下されたキーコード
var textEdit = (elm.tagName == 'TEXTAREA' // イベントの発生がテキストエリアかまたはテキストの時(shí)true
|| (elm.tagName == "INPUT" && elm.type == 'text')
|| (elm.tagName == "INPUT" && elm.type == 'password'));
var comb;
//キー抑止判定
switch(key){
case 8: // Backspaceキーが押下された場(chǎng)合
for(var i = 0; i < deterKeys.length; ++i) {
comb = deterKeys[i];
if(comb.alt == alt && comb.ctrl == ctrl && comb.shift == shift && comb.key == key && false == textEdit) {
return false;
}
}
break;
case 37: // ←キーが押下された場(chǎng)合
case 39: // →キーが押下された場(chǎng)合
for(var i = 0; i < deterKeys.length; ++i) {
comb = deterKeys[i];
if(comb.alt == alt && comb.key == key) {
return false;
}
}
break;
case 36: // Homeキーが押下された場(chǎng)合
for(var i = 0; i < deterKeys.length; ++i) {
comb = deterKeys[i];
if(comb.alt == alt && comb.ctrl == ctrl && comb.shift == shift && comb.key == key) {
alert("禁止されているキー入力です。");
return false;
}
}
break;
default:
for(var i = 0; i < deterKeys.length; ++i) {
comb = deterKeys[i];
if(comb.alt == alt && comb.ctrl == ctrl && comb.shift == shift && comb.key == key) {
event.keyCode=0;
return false;
}
}
break;
}
return true;
}
/***********************************************************************************
* マウス押下時(shí)処理
***********************************************************************************/
function mousedown() {
}
/***********************************************************************************
* 入力キーを無効にする
***********************************************************************************/
function InvalidValue() {
event.returnValue = false;
}
//-->
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -