魚躍于淵

          First know how, Second know why !
          posts - 0, comments - 1, trackbacks - 0, articles - 49

          事件觸發(fā)時(shí),會(huì)將一個(gè) Event 對(duì)象傳遞給事件處理程序,比如:

          1 document.getElementById("testText").addEventListener("keydown"function (event) { alert(event.keyCode); }, false);

          事件類型

          DOM 事件類型是分為 UIEvent、UIEvent:KeyEvent、UIEvent:MouseEvent,不同的事件有不同的屬性和方法,但常用的來(lái)說(shuō)我們都不會(huì)用錯(cuò),比如我們不會(huì)在鼠標(biāo)事件中去取鍵盤值(Ctrl、Alt、Shift 除外),所以我們沒(méi)有必要深究。

          該對(duì)象的屬性和方法有:

          view 只讀,對(duì)象,發(fā)生事件的 Window 對(duì)象。

          type 只讀,字符串。比如鼠標(biāo)點(diǎn)擊事件的類型:click。

          eventPhase 只讀,數(shù)字,事件流正經(jīng)歷的階段。1-捕獲,2-目標(biāo),3-冒泡。

          target 只讀,對(duì)象,派發(fā)事件的目標(biāo)對(duì)象。比如鼠標(biāo)是點(diǎn)擊在哪個(gè)按鈕上的。

          currentTarget 只讀,對(duì)象,當(dāng)前正在調(diào)用監(jiān)聽器的對(duì)象,也就是當(dāng)前 addEventListener 是綁定在哪個(gè)對(duì)象上的。

          timeStamp 只讀,數(shù)字,用毫秒表示事件發(fā)生時(shí)距計(jì)算機(jī)開機(jī)的時(shí)間。


          cancelable 只讀,布爾,處理事件的默認(rèn)行為是否可以停止。主要針對(duì)一些系統(tǒng)事件,如果值為 true,則 event 的 preventDefault 方法可以使用,否則不可用。

          preventDefault() 阻止瀏覽器的默認(rèn)行為,比如在文本框中打字觸發(fā) keydown,如果 keydown 事件處理程序中調(diào)用了 preventDefault(),所打的字就不會(huì)跑到文本框中去,注意,此時(shí)不要彈出 alert 對(duì)話框,否則可能不起作用。IE 中在事件處理程序中用 return false 實(shí)現(xiàn)類似功能。


          bubbles 只讀,布爾,事件是否開啟冒泡功能。

          stopImmediatePropagation 這個(gè)東西在 JavaScript 中是個(gè)屬性,而不是方法,布爾,但具體測(cè)試并未發(fā)現(xiàn)其用途,不知是不是 bug。

          stopPropagation() 停止當(dāng)前的事件流傳播,但不會(huì)停止當(dāng)前正在處理的對(duì)象。IE 中用 event.cancelBubble =  true 實(shí)現(xiàn)類似功能。

          cancelBubble 布爾,是否取消冒泡,不建議使用,用 stopPropagation() 代替。

          preventBubble() 阻止冒泡,不建議使用,用 stopPropagation() 代替。

          preventCapture() 阻止捕獲,不建議使用,用 stopPropagation() 代替。


          detail 只讀,數(shù)字,提供時(shí)間的額外信息,對(duì)于 click 事件、mousedown 事件和 mouseup 事件,這個(gè)字段代表點(diǎn)擊的次數(shù)。

          isChar 只讀,布爾,按下的按鍵值是否是字符,比如按下 Ctrl 鍵時(shí),就返回 false。不過(guò)您在 Firefox 中測(cè)試時(shí),該值總是 false,F(xiàn)irefox 官方已經(jīng)說(shuō)明這是一個(gè) bug。

          altKey 只讀,布爾,是否按下了 Alt 鍵。

          ctrlKey 只讀,布爾,是否按下了 Ctrl 鍵。

          shiftKey 只讀,布爾,是否按下了 Shift 鍵。

          metaKey 只讀,布爾,是否按下了 Meta 鍵。


          下面一些屬性很有意思,請(qǐng)仔細(xì)區(qū)別。

          charCode 只讀,數(shù)字,字符(英文、數(shù)字、符號(hào))的 Unicode 值。

          • 只用于 keypress。

          keyCode 只讀,數(shù)字,鍵盤按鍵值。

          • 用于 keypress 時(shí):返回非字符按鍵值(除 Ctrl、Shift、Alt、Caps Lock、單行文本框中按向上鍵等);
          • 用于 keydown、keyup 時(shí):返回任意鍵值。

          button 只讀,數(shù)字,鼠標(biāo)按鍵值。

          • 用于 click 時(shí):0-左鍵。
          • 用于 mousedown、mouseup 時(shí):0-左鍵,1-中間鍵(滾輪),2-右鍵。

          which 只讀,數(shù)字,鍵盤按鍵值或鼠標(biāo)按鍵值。

          • 用于 keypress 時(shí):等同于 charCode + 回退鍵 + 回車鍵;
          • 用于 keydown、keyup 時(shí):返回任意鍵值;
          • 用于 click 時(shí):1-左鍵,與 button 的值略有區(qū)別。
          • 用于 mousedown、mouseup 時(shí):1-左鍵,2-中間鍵(滾輪),3-右鍵,與 button 的值略有區(qū)別。

          可以看出,which 只有一點(diǎn)沒(méi)有包括:那就是 keypress 時(shí),不如 keyCode 那么全,但實(shí)際上,keypress 事件中用于非字符鍵的情況較少,所以一般還是用 which 代替全部。

          主站蜘蛛池模板: 沾益县| 阿城市| 开平市| 观塘区| 禹州市| 闸北区| 奉贤区| 中方县| 加查县| 海兴县| 长治市| 哈尔滨市| 涟源市| 钟山县| 津市市| 栾川县| 缙云县| 大港区| 威信县| 巴南区| 松滋市| 罗城| 邓州市| 民和| 临湘市| 海伦市| 渝北区| 兴隆县| 确山县| 武邑县| 云浮市| 绥棱县| 老河口市| 柯坪县| 文水县| 克东县| 社旗县| 临清市| 宜章县| 民权县| 东平县|