網站首頁 編程語言 正文
目錄
對象的綁定
- 使用
對象.事件 = 函數
的形式綁定響應函數,只能同時為一個元素的一個事件綁定一個響應函數 - 不能綁定多個,如果綁定多個,則后面會覆蓋前面的
- 這是DMO0的寫法
addEventListener()
- DOM2為我們提供了一個新的綁定元素響應函數
- 參數:
- 第一個,事件的字符串,不要
on
- 第二個,回調函數,當事件觸發時該函數會被調用
- 第三個,是否在捕獲階段觸發事件,布爾值,一般是默認
false
- 第一個,事件的字符串,不要
- 可以同時為一個元素的相同事件同時綁定多個響應函數,當事件被觸發時,響應函數會按照函數的綁定屬性執行
-
addEventListener()
中的this
是綁定事件的對象 - IE8及以下瀏覽器不支持
attachEvent()
- 在IE8中可以使用
attachEvent()
來綁定事件函數 - 參數:
- 第一個,事件的字符串,要
on
- 第二個,回調函數
- 第一個,事件的字符串,要
- 這個方法也可以同時為一個事件綁定多個響應函數,不同的是,它是后綁定先執行,執行順序和
addEventListener()
相反 -
attachEvent()
中的this
是window
- 其他瀏覽器不支持
兩個方法的兼容性函數
- 定義一個函數,用來為指定元素綁定響應函數
-
addEventListener()
中的this
是綁定事件的對象 -
attachEvent()
中的this
是window
- 需要統一兩個方法
this
參數:
-
obj
要綁定事件的對象 -
eventStr
事件的字符串 -
callback
回調函數
代碼:
function bind(obj, eventStr, callback){
//大部分瀏覽器兼容的方式
if(obj.addEventListener){
obj.addEventListener(eventStr, callback, false);
}else{
//IE8及以下
obj.attachEvent("on"+eventStr, function(){
callback.call(obj);
});
}
}
鼠標滾輪滾動事件
onmousewheel
-
onmousewheel
鼠標滾動事件,會在滾輪滾動時觸發 - 火狐不支持該屬性
DOMMouseScroll
- 在火狐中需要使用來綁定滾動事件
- 該事件需要通過
addEventListener()
函數來綁定
wheelDelta
-
e.wheelDelta
可以獲取鼠標滾輪滾動的方向 - 向上滾:正數120,向下滾:負數-120
- 火狐中不支持
detail
- 在火狐中使用
e.detail
來獲取滾動的方向 - 向上滾:正數,向下滾:負數
鍵盤事件
- 按鍵事件一般都會綁定給一些可以獲取到焦點的對象或者是
document
keypress
- 當鍵盤的某個鍵被按下時觸發,不能識別功能鍵
- 保存的是按鍵的ASCII碼值
- 區分字母的大小寫
onkeydown
- 按鍵被按下
- 保存的是按鍵的虛擬鍵碼
- 不區分字母的大小寫
- 對于
onkeydown
來說如果一直按著某個按鍵不松手,則事件會一直觸發 - 當
onkeydown
連續觸發時,第一次和第二次之間會間隔會稍微長一點,其他的會非常的快,這種設計是為了防止誤操作的發生。
onkeyup
- 按鍵被松開
- 不區分字母的大小寫
keyCode
-
e.keyCode事件
來獲取按鍵的編碼 - 可以通過它判斷那個按鍵被按下
- 除了keyCode,事件對象中還提供以下屬性
altKey
ctrlKey
shiftKey
- 可以用上面三個屬性來判斷
alt ctrl 和shift
是否同時按下 - 如果按下則返回
true
,否則false
鍵盤移動DIV
代碼
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>演示</title>
<style>
#box {
width: 100px;
height: 100px;
background-color: red;
position: absolute;
}
</style>
<script>
window.onload = function () {
document.onkeydown = function (event) {
event = event || window.event;
let speed = 10;
//當用戶按下Ctrl鍵以后速度變快
if(event.ctrlKey)
{
speed = 50;
}
/*
* 左鍵 37
* 上鍵 38
* 右鍵 39
* 下鍵 40
*/
var box = document.querySelector("#box")
switch (event.keyCode) {
case 37://左移
box.style.left = box.offsetLeft - speed + 'px';
break;
case 38://上移
box.style.top = box.offsetTop - speed + 'px';
break;
case 39://右移
box.style.left = box.offsetLeft + speed + 'px';
break;
case 40://下移
box.style.top = box.offsetTop + speed + 'px';
break;
}
}
}
</script>
</head>
<body>
<div id="box">
</div>
</body>
</html>
原文鏈接:https://blog.csdn.net/weixin_45660621/article/details/121748660
相關推薦
- 2022-11-02 Kotlin中@JvmOverloads注解作用示例介紹_Android
- 2022-11-07 關于對python中self的深入理解_python
- 2023-12-16 SpringBoot之自定義Starter
- 2022-12-06 詳解Python的整數是如何實現的_python
- 2022-04-23 排序會了遞歸,不學非遞歸太可惜了
- 2022-12-09 Python曲線擬合多項式深入詳解_python
- 2022-04-16 python如何導入自己的模塊_python
- 2023-05-23 Django?事務回滾的具體實現_python
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支