Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 91九色精品国产免费,免费国产一级观看完整版,日本免费中文字幕

          整合營(yíng)銷服務(wù)商

          電腦端+手機(jī)端+微信端=數(shù)據(jù)同步管理

          免費(fèi)咨詢熱線:

          js的事件處理

          js的事件處理

          件處理

          客戶端js程序采用異步事件驅(qū)動(dòng)編程模型。在這種情況下當(dāng)文檔,瀏覽器,元素發(fā)生一些事情的時(shí)候,會(huì)產(chǎn)生事件。

          舉例 當(dāng)瀏覽器加載完文檔以后會(huì)觸發(fā)一個(gè)事件。該事件會(huì)有一個(gè)函數(shù)進(jìn)行處理,即回調(diào)函數(shù)

          這種只不單單用于web界面,所有使用圖形界面的應(yīng)用程序都采用了這種方式。

          事件類型

          事件分類

          依賴于設(shè)備的輸入事件

          有些事件和特定輸入設(shè)備直接相關(guān)。比如鼠標(biāo)和鍵盤。

          touchmove 當(dāng)觸點(diǎn)在觸控平面上時(shí)發(fā)生該事件

          獨(dú)立于設(shè)備的輸入事件

          click事件表示激活了鏈接的事件。通過鼠標(biāo),按鈕或者移動(dòng)設(shè)備上的觸摸觸發(fā)該事件

          用戶界面事件

          通常用于HTML表單元素,包括文本輸入域獲取鍵盤焦點(diǎn)的focus事件,提交按鈕將會(huì)觸發(fā)submit事件

          狀態(tài)變化事件

          不是由用戶活動(dòng)由網(wǎng)絡(luò)或者瀏覽器活動(dòng)觸發(fā),表示某種生命周期或相關(guān)狀態(tài)的變化。

          online 返回瀏覽器的聯(lián)網(wǎng)狀態(tài)

          特定的api事件

          一些web api會(huì)有自己的事件類型

          拖放的api dragstart 當(dāng)用戶拖動(dòng)一個(gè)元素,或者選擇一個(gè)文本的時(shí)候觸發(fā)該事件

          計(jì)時(shí)器和錯(cuò)誤處理程序

          計(jì)時(shí)器在指定的時(shí)間后觸發(fā)該事件,錯(cuò)誤處理程序,try catch 對(duì)應(yīng)于一個(gè)響應(yīng),會(huì)有異步進(jìn)行拋出

          傳統(tǒng)事件類型

          表單事件

          當(dāng)提交表單和重置表單時(shí)會(huì)觸發(fā)submit和reset事件,當(dāng)用戶和類按鈕(包括單選和復(fù)選)交互的時(shí),將會(huì)發(fā)生click事件,當(dāng)用戶輸入文字,選擇選項(xiàng)或選擇復(fù)選框改變相應(yīng)的表單元素的狀態(tài)時(shí),將會(huì)觸發(fā)change事件,通過鍵盤改變焦點(diǎn)的表單元素在得到和失去焦點(diǎn)時(shí)將會(huì)觸發(fā)focus和blur事件。

          通過事件處理程序能取消submit和reset事件的默認(rèn)操作。某些click事件也是如此,focus和clur事件不會(huì)冒泡,但其他所有表單事件都可以。

          無(wú)論用戶何時(shí)輸入文字,都會(huì)觸發(fā)input事件。

          window事件

          window事件是指事件的發(fā)生與瀏覽器窗口本身而非窗口中顯示的任何特定文檔內(nèi)容相關(guān)。

          load事件

          load事件與文檔和其所有外部資源(圖片)完全加載并顯示給用戶時(shí)將會(huì)觸發(fā)。

          unload事件

          unload事件,當(dāng)用戶離開當(dāng)前文檔轉(zhuǎn)向其他文檔時(shí)將會(huì)觸發(fā)。

          unload事件處理程序可以用于保存用戶的狀態(tài),但其不能取消用戶轉(zhuǎn)向其他地方。

          beforeunload事件

          此事件將會(huì)詢問用戶是否確定離開當(dāng)前頁(yè)面。如果beforeunload的回調(diào)函數(shù)返回一個(gè)字符串,那么在新頁(yè)面加載之前,字符串將會(huì)出現(xiàn)在展示給用戶確認(rèn)的對(duì)話框上,這樣用戶將會(huì)有機(jī)會(huì)取消跳轉(zhuǎn)停留在當(dāng)前頁(yè)上

          注意;該事件僅僅是在當(dāng)前頁(yè)面的跳轉(zhuǎn)更改等,轉(zhuǎn)換標(biāo)簽不會(huì)觸發(fā)該事件

          onerror屬性

          此為一個(gè)window對(duì)象的屬性。在js出錯(cuò)的時(shí)候?qū)?huì)觸發(fā)其

          其他

          像img元素這樣的替換元素也能為其注冊(cè)load和error事件處理程序。當(dāng)外部資源完全加載或發(fā)生阻塞加載錯(cuò)誤時(shí)將會(huì)觸發(fā)該事件。某些瀏覽器也支持about事件,當(dāng)圖強(qiáng)因?yàn)橛脩敉V辜虞d進(jìn)程而導(dǎo)致失敗的時(shí)候也會(huì)觸發(fā)該事件。

          focus和blur事件也為window事件,當(dāng)瀏覽器窗口從操作系統(tǒng)中得到或失去鍵盤焦點(diǎn)的時(shí)候?qū)?huì)觸發(fā)該事件

          當(dāng)用戶調(diào)整瀏覽器窗口大小或滾動(dòng)其會(huì)觸發(fā)resize和scroll事件,scroll事件也能在任何可以滾動(dòng)的文檔元素上觸發(fā),例如css的的overflow屬性也能觸發(fā)。

          鼠標(biāo)事件

          當(dāng)用戶在文檔上移動(dòng)和單擊鼠標(biāo)時(shí)都會(huì)產(chǎn)生鼠標(biāo)事件。這些事件在鼠標(biāo)指針?biāo)鶎?duì)應(yīng)的最深嵌套元素上觸發(fā)。但其會(huì)冒泡直到文檔的最頂層。

          clientX和clientY屬性指定了鼠標(biāo)在窗口坐標(biāo)中的位置。button和which屬性指定了按下的鼠標(biāo)鍵是哪個(gè)。

          當(dāng)鼠標(biāo)輔助鍵按下的時(shí)候,對(duì)應(yīng)的屬性為altkey和ctrlkey和metakey和shiftkey會(huì)設(shè)置為true,對(duì)于click事件,detail屬性指定了其是單擊,雙擊,還是三擊。

          每當(dāng)用戶移動(dòng)和拖動(dòng)鼠標(biāo)時(shí),會(huì)觸發(fā)mousemove事件,當(dāng)用戶按下或釋放鼠標(biāo)按鍵的時(shí)候觸發(fā)mousedown和mouseup事件。

          在mousedown和mouseup事件隊(duì)列之后,瀏覽器也會(huì)觸發(fā)click事件,如果用戶在很短的時(shí)間內(nèi)單擊兩次鼠標(biāo),則第二個(gè)事件為dblclic事件,當(dāng)單擊鼠標(biāo)右鍵時(shí),瀏覽器會(huì)顯示上下文菜單,在顯示菜單之前,也會(huì)觸發(fā)contextmenu事件,如果取消這個(gè)事件將會(huì)阻止菜單的顯示,該事件為獲得鼠標(biāo)右擊通知的最簡(jiǎn)單方法。

          當(dāng)用戶移動(dòng)鼠標(biāo)指針從而使它懸停到新元素上時(shí),瀏覽器就會(huì)在該元素上觸發(fā)mouseover事件,當(dāng)鼠標(biāo)移動(dòng)指針從而使它不在懸停在某個(gè)元素上時(shí),瀏覽器會(huì)觸發(fā)mouseout事件,(該事件有relatedTarget屬性指明這個(gè)過程涉及的其他元素)

          當(dāng)用戶滾動(dòng)鼠標(biāo)的時(shí)候,瀏覽器觸發(fā)mousewheel事件,傳遞事件對(duì)象屬性指定輪子轉(zhuǎn)動(dòng)的大小和方向。

          鍵盤事件

          當(dāng)鍵盤聚焦到web瀏覽器時(shí),用戶每次按下或釋放鍵盤上的按鍵時(shí)都會(huì)產(chǎn)生事件,鍵盤快捷鍵葉同樣能被瀏覽器和操作系統(tǒng)吃掉,此時(shí)對(duì)js事件處理程序不可見,無(wú)論任何文檔元素獲取鍵盤焦點(diǎn)都會(huì)觸發(fā)鍵盤事件,并會(huì)冒泡到window對(duì)象,

          觸摸屏和移動(dòng)設(shè)備事件

          用戶旋轉(zhuǎn)設(shè)備的時(shí)會(huì)產(chǎn)生orientationchange事件,有一個(gè)縮放和旋轉(zhuǎn)手勢(shì),當(dāng)手勢(shì)開始時(shí)將會(huì)生成getsturestart事件,手勢(shì)結(jié)束時(shí)將會(huì)生成gestureend事件。在這兩個(gè)事件之間是跟蹤手勢(shì)過程的gesturechange事件隊(duì)列,將事件傳遞的事件對(duì)象屬性為scale和rotation

          握緊手勢(shì)的scale值小于1.0

          撐開手勢(shì)的scale的值大于1.0

          rotation為事件開始時(shí)手指旋轉(zhuǎn)的角度。以度為單位正值表示順時(shí)針方向旋轉(zhuǎn)

          當(dāng)手指觸摸屏幕的時(shí)候?qū)?huì)觸發(fā)touchstart事件,當(dāng)手指移動(dòng)時(shí)會(huì)觸發(fā)touchmove事件,當(dāng)手指離開屏幕時(shí)會(huì)觸發(fā)touchend事件,觸摸事件傳遞的事件對(duì)象有一個(gè)changedTouches屬性,該屬性為一個(gè)類數(shù)組對(duì)象,其每個(gè)元素都描述觸摸的位置。

          當(dāng)設(shè)備允許用戶從豎屏旋轉(zhuǎn)到橫屏模式時(shí)會(huì)在window對(duì)象上觸發(fā)orientationchanged事件。該對(duì)象的orientation屬性能給出當(dāng)前方位,其值為0, 90, 180, 或 -90

          注冊(cè)事件處理程序

          1. 給事件目標(biāo)對(duì)象或文檔元素設(shè)置屬性
          2. 將事件處理程序傳遞給對(duì)象或文檔元素的一個(gè)方法

          設(shè)置js對(duì)象屬性為事件處理程序

          事件處理程序?qū)傩缘拿钟蒾n后面跟著事件名組成。onclick,onchange,onload,onmouseover

          onload 當(dāng)對(duì)象的資源被加載的時(shí)候,該對(duì)象的onload事件將會(huì)被觸發(fā),然后將表單的提交的onsubmit事件和一個(gè)處理函數(shù)進(jìn)行綁定

          onsubmit 在表單提交的時(shí)候,將會(huì)觸發(fā)該事件

          下方栗子演示一個(gè)提交的時(shí)候表單驗(yàn)證的過程

          其中validate函數(shù)為一個(gè)自定義的表單驗(yàn)證函數(shù),其函數(shù)的參數(shù)this指向elt

          window.onload=()=> {

          // 查找一個(gè)<form>元素

          var elt=document.getElementById("shipping_address");

          // 注冊(cè)事件處理程序函數(shù)

          // 在表單提交之前調(diào)用該函數(shù)

          elt.onsubmit=()=> { return validate(this); };

          }

          • 1
          • 2
          • 3
          • 4
          • 5
          • 6
          • 7
          • 8

          設(shè)置HTML標(biāo)簽屬性為事件處理程序

          <button onclick="alert('Thank you');">點(diǎn)擊這里</button>

          • 1

          點(diǎn)擊按鈕會(huì)彈出一個(gè)對(duì)話框

          addEventListener()

          為事件綁定一個(gè)處理的函數(shù)

          <script>

          var b=document.getElementById("my button");

          b.onclick=()=> { alert("Thanks for clicking me!"); };

          b.addEventListener("click", ()=> { alert("Thanks again!"); }, false); // 最后一個(gè)參數(shù)為是否進(jìn)行冒泡

          </script>

          • 1
          • 2
          • 3
          • 4
          • 5

          上方會(huì)彈出兩個(gè)對(duì)話框,一個(gè)觸發(fā)了onclick事件,一個(gè)觸發(fā)了addEventListener注冊(cè)的click事件。

          注冊(cè)的click處理的函數(shù),將會(huì)按照注冊(cè)的順序依次不斷的調(diào)用。(可以注冊(cè)多個(gè)處理程序)。

          document.removeEventListener("mousemove", handleMouseMove, true);

          • 1

          移出在mousemove上注冊(cè)的事件,處理函數(shù)為handLenMouseMove,在事件上直接注冊(cè),沒有冒泡的過程。

          事件處理程序的調(diào)用

          事件處理程序運(yùn)行的環(huán)境

          this關(guān)鍵字指的是事件的目標(biāo)。

          事件處理程序的作用域

          這是個(gè)坑的集散地,表單上有一個(gè)HTML事件處理程序想要引用window的location對(duì)象,必須使用window.location,不能使用location,因?yàn)樵搇ocation為表單作用域鏈上的location

          事件處理程序的返回值

          如果返回false則告訴瀏覽器不要執(zhí)行這個(gè)事件的默認(rèn)操作。

          調(diào)用順序

          通過設(shè)置對(duì)象屬性,HTML屬性注冊(cè)的處理程序一直優(yōu)先調(diào)用

          使用addEventList注冊(cè)的處理程序,按照DOM的順序進(jìn)行調(diào)用

          使用attachEvent()注冊(cè)的事件按照隨機(jī)的順序調(diào)用

          事件傳播

          當(dāng)事件目標(biāo)為window對(duì)象或其他一些單獨(dú)對(duì)象,瀏覽器會(huì)簡(jiǎn)單的調(diào)用對(duì)象上的處理程序響應(yīng)事件。

          調(diào)用目標(biāo)元素上注冊(cè)的事件處理函數(shù)

          在調(diào)用目標(biāo)元素上注冊(cè)的事件處理函數(shù)的時(shí)候,該事件會(huì)冒泡到DOM樹的樹跟,調(diào)用目標(biāo)的父元素的事件處理程序,即可以在共同的祖先元素上注冊(cè)一個(gè)處理程序來(lái)處理所有的事件

          例如:在form元素上注冊(cè)change事件處理程序取代在表單的每個(gè)元素上注冊(cè)change事件處理程序。

          原因:冒泡

          注意:load事件,(load當(dāng)資源加載完成以后,將會(huì)觸發(fā)load事件,不單單指整個(gè)文檔)其會(huì)在Document對(duì)象上停止冒泡不會(huì)傳播到window對(duì)象,只有整個(gè)文檔都加載完成的時(shí)候?qū)?huì)觸發(fā)window對(duì)象的load事件

          捕獲

          事件的第一階段 捕獲 發(fā)生在目標(biāo)處理程序調(diào)用程序之前 addEventener()把一個(gè)布爾值作為其第三個(gè)參數(shù),如果為true那么事件處理程序被注冊(cè)為捕獲事件處理程序,會(huì)在事件傳播的第一個(gè)階段調(diào)用。事件傳播的捕獲階段像是反向的冒泡,,將會(huì)最先調(diào)用window對(duì)象的捕獲處理程序,然后將會(huì)調(diào)用document對(duì)象的捕獲處理程序,接著是body對(duì)象的捕獲處理程序,逐漸按照DOM樹往下,直到調(diào)用事件目標(biāo)的父元素的捕獲事件捕獲。

          事件取消

          通過調(diào)用事件對(duì)象的preventDefault()方法取消事件的默認(rèn)操作。

          文檔加載事件

          web應(yīng)用需要web瀏覽器通知它們文檔加載完畢和為操作準(zhǔn)備就緒的時(shí)間。

          當(dāng)文檔準(zhǔn)備就緒的時(shí)候調(diào)用函數(shù)

          事件冒泡和傳播

          事件冒泡屬于微軟的,向上

          事件傳播屬于網(wǎng)景瀏覽器(懷舊,一個(gè)時(shí)代,可惜已經(jīng)不存在了),正好相反。

          后來(lái)w3c將這兩種給統(tǒng)一了,規(guī)定任何事件首先向下傳播直到遇到目標(biāo)元素,如果沒有遇到冒泡元素,將會(huì)不斷的向上冒泡進(jìn)行返回。

          本上所有的PC端事件移動(dòng)端都可以用

          <!DOCTYPE html>
          <html>
          <head>
          <meta charset="UTF-8">
          <title></title>
          <style type="text/css">
          *{
              margin: 0;
              padding: 0;
          }
          div{
              width: 100vw;
              height: 50vh;
              background-color: orange;
          }
          </style>
          </head>
          <body>
          <div></div>
          
          <script type="text/javascript">
              //基本上所有的PC端事件移動(dòng)端都可以用
          
              var div=document.getElementsByTagName("div")[0];
              /*div.onclick=function(){
              this.style.backgroundColor="green";
              }*/
          
              div.onmouseover=function(){
                  this.style.backgroundColor="blue";
              }
          </script>
          </body>
          </html>

          移動(dòng)端特有的事件

          ontouchstart 手指按下

          ontouchmove 手指移動(dòng)

          ontouchend 手指抬起

          ontouchcancel 移動(dòng)端發(fā)生了觸摸中斷, 這個(gè)事件不容易在瀏覽器的模擬器中模擬, 實(shí)際中用的很少。

          <!DOCTYPE html>
          <html>
          <head>
          <meta charset="UTF-8">
          <title></title>
          <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />
          <style type="text/css">
          *{
              margin: 0;
              padding: 0;
          }
          div{
              width: 100vw;
              height: 50vh;
              background-color: orange;
          }
          </style>
          </head>
          <body>
          <div></div>
          
          <script type="text/javascript">
              //基本上所有的PC端事件移動(dòng)端都可以用
              var div=document.getElementsByTagName("div")[0];
          
          
              //移動(dòng)端事件我們通過DOM2級(jí)進(jìn)行綁定
              /*div.ontouchstart=function(){
              this.innerText +="手指按下";
              }*/
          
              //div.addEventListener(事件名稱(不加on),執(zhí)行函數(shù),是否捕獲)
              //div.attachEvent(事件名稱(加on),執(zhí)行函數(shù))
          
              div.addEventListener("touchstart",function(){
              this.innerText="手指按下";
              },false)
          </script>
          </body>
          </html>

          移動(dòng)端事件監(jiān)聽

          者:kyrieliu

          轉(zhuǎn)發(fā)鏈接:https://mp.weixin.qq.com/s/h0rwZr7FDPpE30TxlF5lZw


          主站蜘蛛池模板: 精品免费久久久久国产一区| 天堂资源中文最新版在线一区| 日本在线不卡一区| 国产精品高清一区二区人妖| 无码人妻精品一区二区蜜桃百度| 久久久老熟女一区二区三区| 蜜桃AV抽搐高潮一区二区| 在线一区二区观看| 亚洲乱码日产一区三区 | 日韩色视频一区二区三区亚洲| 一区 二区 三区 中文字幕| 国产精品99精品一区二区三区 | 日韩一区二区三区免费播放| 亚洲一区电影在线观看| 日韩精品无码一区二区视频| 亚洲一区精品伊人久久伊人 | 亚洲国产精品一区二区第一页| 成人免费av一区二区三区| 亚洲中文字幕丝袜制服一区| 亚洲性日韩精品一区二区三区| 福利片福利一区二区三区| 视频在线观看一区二区三区| 日韩免费一区二区三区| 一区二区三区杨幂在线观看| 一区二区免费国产在线观看| 国产一区二区精品在线观看| 另类国产精品一区二区| 色欲AV蜜桃一区二区三| 中文字幕无码不卡一区二区三区| 无码乱码av天堂一区二区| 免费一本色道久久一区| 怡红院一区二区在线观看| 全国精品一区二区在线观看| 亚洲片国产一区一级在线观看| 精品久久久久一区二区三区| 九九久久99综合一区二区| 人妻无码一区二区三区AV| 中文字幕AV一区二区三区 | 色偷偷一区二区无码视频| 亚洲国产成人精品无码一区二区| 国产怡春院无码一区二区|