鍵盤事件及阻止默認事件


1.鍵盤事件

/*
 鍵盤事件
 onkeydown:當鍵盤按鍵按下的時候觸發
 onkeyup:當鍵盤按鍵抬起的時候觸發
 
 event.keyCode:數字類型  鍵盤按鍵的值 鍵值
 		ctrlKey,shiftKey,altKey 布爾值
 		當一個事件發生的時候,如果ctrl或者shift或者alt是按下的狀態,返回true,否則返回false;
 	
 注意:不是所有元素都能夠接收鍵盤事件,能夠響應用戶輸入的元素,能夠接收焦點的元素就能夠接收鍵盤事件
 

 * */
//document.onkeydown=function(ev){
//	var ev=ev||event;
////	alert(ev.keyCode);
//}

document.onclick=function(ev){
	var ev=ev||event;
	//點擊doucument的時候,當ctrl鍵按下時彈出true,抬起時彈出false
	alert(ev.ctrlKey);
}

按鍵控制div移動(及解決卡頓問題)

var oDiv=document.getElementById("div1");

//創建各個方向條件判斷初始變量
var Left=false;
var Right=false;
var Top=false;
var Bottom=false;

//當按鍵按下時,對應方向的按鍵條件變為true
document.onkeydown=function(ev){
	var ev=ev||event;
	switch (ev.keyCode){
		case 38:
			Top=true;
			break;
		case 40:
			Bottom=true;
			break;
		case 37:
			Left=true;
			break;
		case 39:
			Right=true;
			break;
	}
}
//當按鍵抬起時,對應方向的按鍵條件變為false
document.onkeyup=function(ev){
	var ev=ev||event;
	switch (ev.keyCode){
		case 38:
			Top=false;
			break;
		case 40:
			Bottom=false;
			break;
		case 37:
			Left=false;
			break;
		case 39:
			Right=false;
			break;
	}
}

setInterval(function(){
	//當其中的一個條件為true時,則執行當前函數
	if(Right){
		oDiv.style.left=oDiv.offsetLeft+10+'px';
	}else if(Left){
		oDiv.style.left=oDiv.offsetLeft-10+'px';
	}else if(Top){
		oDiv.style.top=oDiv.offsetTop-10+'px';
	}else if(Bottom){
		oDiv.style.top=oDiv.offsetTop+10+'px';
	}
},50)

2.取消默認事件 

自定義右鍵菜單

/*
阻止默認事件
分析當前這個行為是什么事件觸發的,然后在這個事件的處理函數中使用return false;就可以阻止默認事件
oncontextmenu:右鍵菜單事件,當右鍵菜單(環境菜單)顯示出來的時候觸發

 * */
//自定義右鍵菜單

var oDiv=document.getElementById("div1");

//點擊右鍵菜單顯示
document.oncontextmenu=function(ev){
	var ev=ev||event;
	
	//鼠標值
	var Left=ev.clientX;
	var Top=ev.clientY;
	
	//菜單根據鼠標的位置定位
	oDiv.style.left=Left+'px';
	oDiv.style.top=Top+'px';
	
	oDiv.style.display="block";
	
	
	
	//阻止默認事件
	return false;
}
//點擊document菜單消失
document.onclick=function(){
	oDiv.style.display="none";
}

  

  

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM