⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 eventlistener.js

📁 基于Struts的试卷分析系统
💻 JS
字号:
<!--
// 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;

//キーボードイベントを認識するように、このページにフォーカスを移す
self.focus();

// --------------------------------------------------<< 変数定義 >>
//
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キー押下
// 現在のウィンドウを閉じる
deterKeys[deterKeys.length] = new keySet(true,false,false,115);              // Alt + F4キー押下
deterKeys[deterKeys.length] = new keySet(false,true,false,87);               // Ctl + Wキー押下
// 現在のページの更新
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キー押下
// 次のフレームに移動
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キー押下
// ホームページへ移動
deterKeys[deterKeys.length] = new keySet(true,false,false,36);               // Alt + Homeキー押下
// [お気に入りの整理]のダイアログ表示
deterKeys[deterKeys.length] = new keySet(false,true,false,66);               // Ctl + Bキー押下
// 現在のページをお気に入りに追加
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キー押下
// お気に入りバー表示
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キー押下
// 現在のページまたはアクティブなフレームの印刷
deterKeys[deterKeys.length] = new keySet(false,true,false,80);               // Ctl + Pキー押下
// 現在のページを保存
deterKeys[deterKeys.length] = new keySet(false,true,false,83);               // Ctl + Sキー押下
// 次のページへ移動
deterKeys[deterKeys.length] = new keySet(true,false,false,37);               // Alt + →キー押下
// 前のページへ移動
deterKeys[deterKeys.length] = new keySet(true,false,false,39);               // Alt + ←キー押下
// 
deterKeys[deterKeys.length] = new keySet(false,false,false,8);               // Backspace + ←キー押下

/***********************************************************************************
 * フォーカス取得時の処理
 ***********************************************************************************/
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;
}

/***********************************************************************************
 * フォーカスが無くなった時の処理
 ***********************************************************************************/
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 ;
}

/***********************************************************************************
 * キーの組み合わせを格納する構造体
 * @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'       // イベントの発生がテキストエリアかまたはテキストの時true
	            || (elm.tagName == "INPUT" && elm.type == 'text')
	            || (elm.tagName == "INPUT" && elm.type == 'password'));
	var comb;

	//キー抑止判定
	switch(key){
		case 8:                                       // Backspaceキーが押下された場合
			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:                                      // ←キーが押下された場合
		case 39:                                      // →キーが押下された場合
			for(var i = 0; i < deterKeys.length; ++i) {
				comb = deterKeys[i]; 
				if(comb.alt == alt && comb.key == key) {
					return false; 
				}
			}
			break;
		case 36:                                      // Homeキーが押下された場合
			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;
}

/***********************************************************************************
 * マウス押下時処理
 ***********************************************************************************/
function mousedown() {

}

/***********************************************************************************
 * 入力キーを無効にする
 ***********************************************************************************/
function InvalidValue() {
	event.returnValue = false;
}
//-->

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -