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事件
- 事件處理事件
- React事件處理React事件
- vue事件處理Vue事件
- JavaSwing 事件處理Java事件
- JavaScript事件處理JavaScript事件
- Flutter | 事件處理Flutter事件
- react之事件處理React事件
- 事件分發之View事件處理事件View
- 事件分發和處理事件
- freeswitch的event事件處理事件
- Laravel 事件&非同步處理Laravel事件非同步
- W3C的事件處理和IE的事件處理有哪些區別?事件
- JS異常處理JS
- tabbar凸起點選事件處理tabBar事件
- React 深入系列5:事件處理React事件
- 自定義事件相容處理物件事件物件
- Java——事件處理機制概要Java事件
- Flink - CEP(複雜事件處理)事件
- redis的事件處理機制Redis事件
- js中非同步處理JS非同步
- Python爬蟲js處理Python爬蟲JS
- snabbdom原始碼解析(七) 事件處理原始碼事件
- 第七章 事件處理器事件
- JavaScript 註冊事件處理函式JavaScript事件函式
- React 中常用的事件處理方式React事件
- 淺入深出Vue:事件處理Vue事件
- echarts 繫結事件處理函式Echarts事件函式
- 基於python的事件處理模型Python事件模型
- java事件處理模型是什麼Java事件模型
- log file sync等待事件處理思路事件
- React學習筆記-事件處理React筆記事件
- Qt 事件傳遞流程-事件處理器|事件分發器|事件過濾器QT事件過濾器
- node js 處理PDF檔案JS
- js資料處理——遍歷JS
- [轉] Scala 中的非同步事件處理非同步事件
- JavaScript 批量註冊事件處理函式JavaScript事件函式
- Nginx 超時事件的處理機制Nginx事件
- Vue學習筆記之事件處理Vue筆記事件