JS事件處理
滑鼠事件
document.onclick = function(ev) {
var oEvent = ev || event; //ie下ev不存在,firefox預設傳一個ev
oEvent.clientX; //滑鼠點選時的位置
}
事件冒泡
//取消事件冒泡
oBtn.onclick = function(ev) {
var oEvent = ev || event;
oEvent.cancelBubble = true;
}
控制元件隨著滑鼠移動
document.onmousemove = function(ev) {
var oEvent = ev || event;
//clientX和clientY代表的是可視區的座標
//所有使用clientX和clientY的都需要計算到滾動條
//oDiv需要設定style為absolute
var scrollTop = document.documentElement.scrollTop || document.body.scrollTop;
oDiv.style.top = oEvent.clientY + document.documentElement.scrollTop;
}
按鍵事件
基礎
onkeydown、onkeyup、onkeypress
document.onkeydown = function(ev) {
oEvent = ev || event;
oEvent.keyCode
}
小知識
oDiv.offsetLeft; //就是style中的left值 + margin-left值
ctrl+enter留言
oText.onKeydown = function(ev) {
var oEvent = ev || event;
//shiftKey,altKey
if(oEvent.ctrlKey && oEvent.keyCode == 13) {
}
}
預設行為
遮蔽右鍵選單
document.oncontextmenu = function(){
return false;
}
阻止表單提交
oForm.onsubmit = function() {
return false;
}
自定義右鍵選單
<style>
#menu {
width: 50px;
background: #CCC;
border: 1px solid black;
position: absolute;
display: none;
}
</style>
<ul id="menu">
<li>登入</li>
<li>回到首頁</li>
<li>登出</li>
</ul>
//js
document.oncontextmenu = function(ev) {
var oEvent = ev || event;
var oUl = document.getElementById("menu");
oUl.style.display = "block;
//未加 scrollTop和scrollLeft
oUl.style.left = oEvent.clientX + 'px';
oUl.style.top = oEvent.clientY + 'px';
return false;
}
document.onclick = function () {
var oUl = document.getElementById("menu");
oUl.style.display = 'none';
}
拖拽事件
//onmousedown -> onmousemove -> onmouseup
window.onload = function() {
var oDiv = document.getElementById("div1");
var disX = 0;
var disY = 0;
oDiv.onmousedown = function(ev) {
var oEvent = ev || event;
disX = oEvent.clientX - oDiv.offsetLeft;
disY = oEvent.clientY - oDiv.offsetTop;
//防止拖出div範圍
document.onmousemove = function(ev) {
var oEvent = ev || event;
oDiv.style.left = oEvent.clientX - disX + 'px';
oDiv.style.top = oEvent.clientY - disY + 'px';
}
document.onmouseup = function() {
document.onmousemove = null;
document.onmouseup = null;
}
}
return false; //修正firefox下的bug,空div拖拽bug
}
相關文章
- React.js 實戰之 事件處理ReactJS事件
- 公共事件處理函式js庫事件函式JS
- 事件處理事件
- js dom元素事件處理簡單介紹JS事件
- js如何批量註冊事件處理函式JS事件函式
- Flutter | 事件處理Flutter事件
- JavaScript事件處理JavaScript事件
- React事件處理React事件
- vue事件處理Vue事件
- IE事件處理事件
- 事件相容處理事件
- js刪除註冊的事件處理函式JS事件函式
- javaScript事件(二)事件處理程式JavaScript事件
- react之事件處理React事件
- wx處理滑鼠事件事件
- 事件分發之View事件處理事件View
- 事件冒泡、事件捕獲、DOM0級事件處理程式、DOM2級事件處理程式事件
- js為按鈕註冊點選事件處理函式JS事件函式
- js批量註冊事件處理函式程式碼例項JS事件函式
- js如何降低事件處理函式的執行頻率JS事件函式
- 事件分發和處理事件
- Laravel 事件&非同步處理Laravel事件非同步
- java中的事件處理Java事件
- DFS lock handle事件處理事件
- js處理urlJS
- 如何給js的onclick事件處理函式傳遞引數JS事件函式
- js為物件註冊多個事件處理函式程式碼JS物件事件函式
- JSP 異常處理如何處理?JS
- React 深入系列5:事件處理React事件
- tabbar凸起點選事件處理tabBar事件
- freeswitch的event事件處理事件
- redis的事件處理機制Redis事件
- Java——事件處理機制概要Java事件
- 自定義事件相容處理物件事件物件
- Delphi處理TWebBrowser的Close事件Web事件
- SlidingMenu事件處理流程事件
- C#事件處理機制C#事件
- struts 怎樣做事件處理事件