DOM重點核心(注冊事件+DOM事件流)

目錄

1.注冊事件

注冊時間概述

addEventListener()

刪除事件

2.DOM事件流

DOM事件流理論

事件對象

事件對象的常見屬性和方法

e.targe 和?this的區別

阻止默認行為

阻止冒泡

事件委托

禁止右鍵菜單和禁止選中文字

獲得鼠標的坐標(可視區、頁面、瀏覽器)

常用鍵盤事件

keyCode判斷用戶按下的鍵的ASCII值


1.注冊事件

注冊時間概述

傳統注冊方式,特點是注冊時間是唯一的

方法監聽注冊方式,特點是同一個元素同一個事件樂意注冊多個監聽器

addEventListener()

eventTarget.addEventListener(type,listener[,useCapture])

type 事件類型字符串,比如click,mouseover,這里要注意不需要帶on了

listener事件處理函數,事件發生時,會調用該監聽函數

useCapture 可選參數,是一個布爾值,默認值是false

addEventListener(eventName,fn)? ? 不需要添加'on'

attachEvent? 中需要添加‘on’

刪除事件

傳統方式刪除? div[0].οnclick=null

第一種? 寫eventTarget.addEventListener('click',函數),就是把函數體寫在了外面?里面的函數調用不用再加小括號

? ? ? ? ? div[0].addEventListener('click',fn)? ? ? ? //不要看圖片中的,這一步是要寫的

??????????function fn(){

? ? ? ? ? ? ? ? alert(22)

? ? ? ? ? ? ? ? div[1].removeEventListener('click',fn)

}

第二種,先寫eventTarget.attchEvent('onclick',函數) ,再同上寫

兩種寫法無非就是第二種比第一種多了“on”

2.DOM事件流

DOM事件流理論

捕獲階段從大到小,冒泡階段從小到大

事件發生時會在元素節點之間按照特定的順序傳播,這個傳播過程即DOM事件流

addEventListener(type,listener[,useCapture])? ?

addEventListener(type,function(){},true/false)

? 第三個參數如果是true,表示在事件捕獲階段調用事件處理程序;如果是false或者是省略,表示在事件冒泡階段調用事件處理程序

有些事件是沒有冒泡的,比如onblur 、onfocus 、onmouseenter、 onmouseleave

事件對象

eventTarget.οnclick=function(event){}

eventTarget.addEventListener('click',function(event){})

event就是事件對象,寫在函數的小括號中

標準瀏覽器中將event 單寫成e就可以識別,但是有些不能用,需要寫window.event來獲取查找

事件對象的常見屬性和方法

e.targe 和?this的區別

e.target 返回的是觸發事件的對象(元素)? ? ? this 返回的是綁定事件的對象(元素)

e.target? 點擊了哪個元素,就返回那個元素; this 不論點擊誰,返回的都是綁定事件

一些兼容性問題

阻止默認行為

返回事件類型

div.addEventListener('事件類型',調用函數)? ?函數中寫e.type

阻止默認行為(如讓鏈接不跳轉、點擊提交按鈕不提交)

普通瀏覽器 e.preventDefault()? ? ? 前面接受的對象(var)是鏈接或者按鈕

低版本瀏覽器 e.returnValue;

只限于傳統的注冊方式 return false

阻止冒泡

標準瀏覽器? e.stopPropagation()

低版本瀏覽器? e.cancelBubble=true? ? 可以先進行一個判斷

寫在函數中,可以組織后面的冒泡

事件委托

不是給每個子節點單獨設置事件監聽器,而是將事件監聽器設置在其父節點上,然后利用冒泡原理影響設置每個節點

綁定父級元素,在父級元素的函數中添加需求? ? e.target可以獲得點擊對象

禁止右鍵菜單和禁止選中文字

contextmenu主要控制應該何時顯示上下文菜單,主要用于程序員取消默認的上下文菜單

在函數中添加e.preventDefault()即可

selectstart 開始選中? (不能進行復制等操作)

在函數中添加e.preventDefault()即可

獲得鼠標的坐標(可視區、頁面、瀏覽器)

client 鼠標在可視區的x和y坐標? ?e.clientX x方向? ???e.clientY y方向

page 鼠標在文檔頁面的x和y坐標? ?e.pageX? x方向? ?e.pageY y方向

screen 鼠標在電腦屏幕的x和y坐標? ? ?e.screenX x方向? ? e.screenY y方向

移動天使

用到了mousemove的觸發方式,只要鼠標移動1px,事件就會被觸發

常用鍵盤事件

onkeyup 某個按鍵被松開時觸發

onkeydown? 某個按鍵被按下時觸發

onkeypress??某個按鍵被按下時觸發 但是它不識別功能鍵,比如ctrl、shift、箭頭等

使用addEventListener時不用加‘on’

三個時間的執行順序是:keydown-keypress-keyup

keyCode判斷用戶按下的鍵的ASCII值

onkeydown和onkeyup不區分大小寫? ? onkeypress區分大小寫

將時間方式定義為"keyup"或者其他,在函數中直接console.log(e),就會出現點擊按鈕輸出的結果

輸入內容案例

用keyup而不用keydown,前者是彈開后進入判斷再去執行事件不會再輸入內容,而后者是直接輸入內容再去進行判斷

目標位置.focus()? focus直接定位到目標位置

這里寫的是document.addEventListener(),是因為是在整個網頁中點擊的,綁定的是整個網頁

快遞單號查詢

在大盒子中放兩個小盒子,一個是彈出的顯示大框,一個是輸入框

keydown和keypress在文本框中的特征:兩個事件觸發時,文字還沒有落進文本框?,而keyup觸發時文字已經落入文本框了

還有一個使用keyup的原因是,在按鍵的時候能先輸入文字,即文本框中有字,隱藏的框能檢測到value值不為空,所以能顯示出來;如果換成其他兩種形式,第一次在按鍵的時候,顯示大框不會彈出來

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/12325.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/12325.shtml
英文地址,請注明出處:http://en.pswp.cn/web/12325.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

js原生彈框多選框

js原生彈框多選框 代碼如下&#xff1a; <!DOCTYPE html> <html lang"en"> <head> <meta charset"UTF-8"> <meta name"viewport" content"widthdevice-width, initial-scale1.0"> <title>JavaS…

golang適配國產數據庫

隨著國產化的推進&#xff0c;越來越多的企業選擇國產數據庫替代mysql或者Oracle。 本篇主要介紹golang如何適配國產數據庫 主流的國產數據庫有達夢&#xff0c;金倉&#xff0c;神通&#xff0c;優炫&#xff0c;南大通用數據庫等 前提環境 unixODBC安裝 yum -y install un…

【深度學習實戰(36)】模型轉換之onnx模型轉地平線J3 二進制bin模型

一、PTQ量化流程 &#xff08;1&#xff09; 核查onnx模型 &#xff08;2&#xff09;準備和生成模型校準數據集 &#xff08;3&#xff09;PTQ量化 &#xff08;4&#xff09;量化模型推理 二、具體流程 &#xff08;1&#xff09;使用01_check_onnx.sh腳本&#xff0c;對o…

Spring6 源碼分析-ioc

&#xff08;1&#xff09;IDEA開發工具&#xff1a;2022.1.2 &#xff08;2&#xff09;JDK&#xff1a;Java17&#xff08;Spring6要求JDK最低版本是Java17&#xff09; &#xff08;3&#xff09;Spring&#xff1a;6.0.2 <dependencies><!--spring context依賴…

【教程】Linux/Jetson 安裝X11VNC同步屏幕內容

轉載請注明出處&#xff1a;小鋒學長生活大爆炸[xfxuezhagn.cn] 如果本文幫助到了你&#xff0c;請不吝給個[點贊、收藏、關注]哦~ 目錄 背景說明 實際效果 安裝步驟 安裝 x11vnc 配置 x11vnc 配置 x11vnc 作為系統服務 使用 VNC 客戶端連接 背景說明 通常vnc-server是單…

分享一個非常好用的安裝包下載網站

當我們需要下載linux下的某些包,以便在自己的環境下進行編譯自己的安裝包的時候,可能需要用到一些各種版本的依賴包,從網上 百度會很麻煩。 這里分享一個很好用的安裝包下載網站,記得點贊收藏 網站: Red Hat Enterprise Linux Repositories - pkgs.org 找到對應系統,然…

深入理解K8S【安全認證機制kubectlconfig】

深入理解K8S【安全認證機制】 1 核心概念 1.1 安全體系 對于大型系統來說&#xff0c;對業務的權限、網絡的安全認證是必不可少的。 對于linux系統來說&#xff0c;用戶和組、文件權限、SELinux、防火墻、pam、sudo等&#xff0c;究其核心的目的都是為了保證系統是安全的。 …

golang 中在for循環體內使用select case <-time.After定時器問題

在go語言的代碼中&#xff0c;我們經常會看到在在for循環體內使用select case <-time.After 的類似語句&#xff0c; 其實這個地方不管你是用 time.After(2 * time.Second) 還是 time.NewTicker(2 * time.Second) 的方式&#xff0c;如果放到for循環體內select case 則這個c…

【element-plus】自動導入 + typescript 提示 + 自定義主題色

1、自動導入 2、引用加載組件類型提示 第一步&#xff1a;安裝自動導入功能所需的插件 npm install -D unplugin-vue-components unplugin-auto-import 第二步&#xff1a; vite版&#xff1a; // vite.config.ts import { defineConfig } from vite import AutoImport fr…

四天學會JS高階(學好vue的關鍵)——作用域解構箭頭函數(理論+實戰)(第一天)

一、作用域 提到作用域&#xff08;作用域又分為局部作用域和全局作用域&#xff09;&#xff0c;就要想到變量。因為作用域規定了變量能夠被訪問的范圍&#xff08;也就是作用域是為變量而服務的&#xff09;&#xff0c;為了避免全局變量污染這一情況&#xff0c;所以需要使…

如何排查域名網站無法訪問了頁面報500錯誤

本周有一個客戶&#xff0c;購買Hostease的虛擬主機&#xff0c;詢問我們的在線客服&#xff0c;域名網站無法訪問了報500錯誤頁面&#xff0c;怎么辦&#xff1f;我們為用戶提供相關教程&#xff0c;用戶很快解決了遇到的問題。在此&#xff0c;我們分享這個操作教程&#xff…

bugfix:遇見“隱形字符”:ⅰ與i的編碼迷局

前言 在軟件開發的世界里&#xff0c;遇到各種奇奇怪怪的bug是在所難免的。今天&#xff0c;我就遭遇了一個看似簡單實則棘手的問題——用戶反饋賬號無法登錄&#xff0c;系統一直提示“賬號不存在”。一番抽絲剝繭后&#xff0c;我發現問題竟然出在一個不起眼的字符上&#x…

Go微服務: Gin框架搭建網關, 接入熔斷器,鏈路追蹤以及服務端接入限流和鏈路追蹤

概述 本文使用最簡單和快速的方式基于Gin框架搭建一個微服務的網關調用微服務的場景網關作為客戶端基于RPC調用某一服務端的服務并接入熔斷和限流以及鏈路追蹤具體場景&#xff1a;通過網關API查詢購物車里的數據在最后&#xff0c;會貼上網關和購物車服務的代碼倉庫 服務端搭…

避雷:搭建AI知識庫注意事項

AI知識庫作為信息存儲和進行智能處理的核心部分&#xff0c;受到越來越多企業的重視。為了更好地發展&#xff0c;企業也紛紛開始搭建AI知識庫。然而&#xff0c;在搭建AI知識庫的過程中&#xff0c;也有很多雷區容易踩到&#xff0c;導致項目延遲、效果不佳甚至失敗。所以&…

《控制系統實驗與綜合設計》計控第三次(含程序和題目)

實驗七 采樣控制系統的分析 一、實驗完成任務 1、熟悉用 LF398 組成的采樣控制系統&#xff1b; 2、通過本實驗理解采樣定理和零階保持器的原理及其實現方法&#xff1b; 3、觀察系統在階躍作用下的穩態誤差。 4.、研究開環增益 K 和采樣周期 T 的變化對系統動態性能的影響…

Linux基礎之進程-進程狀態

目錄 一、進程狀態 1.1 什么是進程狀態 1.2 運行狀態 1.2 阻塞狀態 1.3 掛起狀態 二、Linux操作系統上具體的進程狀態 2.1 狀態 2.2 R 和 S 狀態的查看 2.3 后臺進程和前臺進程 2.4 休眠狀態和深度休眠狀態 一、進程狀態 1.1 什么是進程狀態 首先我們知道我們的操作系…

分布式光伏監控系統功能模塊詳解

目前&#xff0c;分布式光伏發電系統的總容量比較小&#xff0c;并且光伏電站的功率受外界環境影響容易出現大起大落的現象。這使電壓調整變得很困難。光伏電站運行維護人員不足&#xff0c;長時間不保養維護會影響光伏電站的發電效率。針對上述問題&#xff0c;鷓鴣云基于無線…

天銳綠盾|設計院圖紙透明加密軟件、制造業文件資料防止外泄

#圖紙加密軟件# 天銳綠盾是一家專注于數據安全解決方案的提供商&#xff0c;其產品主要為企業級用戶設計&#xff0c;旨在保護敏感信息和知識產權免遭未經授權的訪問或泄露。"天銳綠盾"的圖紙透明加密軟件和機械制造業文件資料防止外泄系統&#xff0c;是專為設計院…

JS中的宏任務和微任務

JavaScript 引擎是建立在一個事件循環系統之上的&#xff0c;它實時監控事件隊列&#xff0c;如果有事件就執行&#xff0c;如果沒有事件就等待。事件系統是一個典型的生產消費模式&#xff0c;生產者發出事件&#xff0c;接收者監聽事件&#xff0c;在UI 開發中是常見的一個設…

Modbus TCP轉CAN網關在不同行業中的應用以及其使用上的優勢

倍訊科技Modbus TCP轉CAN網關通常被用于工業自動化領域&#xff0c;特別是在需要連接現有Modbus TCP網絡和CAN總線設備的場景中。以下是該網關在不同行業中的應用以及其使用上的優勢&#xff1a; 1. 制造業&#xff1a; - 在制造業中&#xff0c;各種類型的設備和機器通常使用不…