日本搞逼视频_黄色一级片免费在线观看_色99久久_性明星video另类hd_欧美77_综合在线视频

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > web前端 > jscript > JavaScript Event學習第九章:鼠標事件

JavaScript Event學習第九章:鼠標事件

來源:程序員人生   發布時間:2014-01-18 00:54:10 閱讀次數:3336次
鼠標事件是到目前為止最重要的事件。在這一章我將介紹一些鼠標事件的最常見的問題和技巧。

先看看都有哪些鼠標事件:mousedown,mouseup_and_click,dblclick,mousemove和mouseover mouseout。然后還會解釋一下relatedTarget,fromElement和toElement這些事件屬性。最后是微軟的mouseenter和mouseleave事件。

瀏覽器的兼容性問題,可以在瀏覽器兼容性列表查看。

例子
這里有一個例子。可以幫助理解下面的內容。
mousedown,mouseup,click和dblclick在這個鏈接上注冊。可以再下面的文本框里面查看。或者在對話框里面。(請在原文里嘗試:http://www.quirksmode.org/js/events_mouse.htm)

Mousedown,mouseup,click
如果用戶在一個元素上點擊,那么最少三個事件會被觸發,順序是這樣的:
1、mousedown,當用戶在這個元素上按下鼠標鍵的時候
2、mouseup,當用戶在這個元素上松開鼠標鍵的時候
3、click,當一個mousedown和一個mouseup都在這個元素上被檢測到的時候發生

通常mousedown和mouseup比click有用。有些瀏覽器不允許你讀取onclick的事件信息。而且有時候用戶用鼠標做出某些動作click事件沒有跟上。

假設用戶在一個鏈接上按下了鼠標鍵,然后把鼠標挪開了并且挪開后松開了鼠標鍵。那么這時候這個鏈接就僅僅發生了mousedown事件。類似的,用戶在點擊鼠標之后挪到了鏈接上,那么鏈接就僅有mouseup發生。這兩種情況都沒有click事件發生。

這是不是一個問題取決于用戶的行為。但是你應該注冊onmousedown/up事件,除非你就是完全想click發生。

如果你用了彈出警示框的話,瀏覽器可能會丟失事件發生的軌跡和發生了多少次,會引起混亂。所以最好別用那個。

Dblclick
dblclick事件很少用。如果你要用的話一定不要把onclick和dblclick的事件處理程序注冊在一個HTML元素上。如果兩個都注冊了的話你要知道用戶到底干什么是一件基本上不可能的事情。

總之,當用戶在一個元素上雙擊的時候click事件總是發生在dblclick之前。另外,在Netscape中,第二個click總是會在dblclick之前被分開處理。不管怎樣,警示框在這是很危險的。

所以保證你的click和dblclick很好的分離能避免很多復雜的事情。

Mousemove
mousemove事件運行的很好,但是需要注意的是那可能需要很多的系統資源來處理所有的mousemove事件。當用戶把鼠標移動一個像素,mousemove就觸發一次。就算什么都沒發生,長而復雜的函數也要耗費很長的時間會影響網站的效率:所有的事情都會變慢,尤其在那些老古董上。

所以最好的辦法就是當你需要的時候注冊onmousemove事件,在不用的時候盡快移除:

element.onmousemove = doSomething;

2 // later

3 element.onmousemove = null;

Mouseover和mouseout
再看看這個例子,換成mouserover然后試試。這個例子只是在ev3上添加了onmouseover的事件處理程序。然而你會注意到不僅僅在ev3上會觸發事件在ev4或者span上都會觸發。在Mozilla 1.3之前,當鼠標進入一個文本區域的時候都會觸發。

原因當然就是事件冒泡。用戶在ev4上觸發了mouseover事件。在這個元素上沒有onmouseover事件處理程序,但是在ev3上有。所以當事件冒泡到ev3上的時候,程序就執行了。

現在這樣的設置雖然都完全正確,但是還有一個問題。首要問題就是目標。假設鼠標進入了ev4:
-----------------------------------------
| This is div id="ev3" |
| ----------------------------- |
| | This is div id="ev4" | |
| | -------- <-------- |
| | | span | | |
| | | | | |
| | -------- | |
| ----------------------------- |
-----------------------------------------

<--------: mouse movement

現在這個事件的target/srcElement就是ev4:就是事件發生的元素,因為鼠標移動到了他上面。但是當下面的發生時候:
-----------------------------------------
| This is div id="ev3" |
| ----------------------------- |
| | This is div id="ev4" | |
| | -------- | |
| | | span | | |
| | | --------> | |
| | -------- | |
| ----------------------------- |
-----------------------------------------

-------->: mouse movement

這個事件的target/srcElement是一樣的。在這一樣還是鼠標進入ev4。然而你可能會當鼠標從ev3來或者從SPAN來的時候做不同的事。所以我們需要知道鼠標到底從哪來的。

relatedTarget,fromElement,toElement
W3C把relatedTarget屬性加進了mouseover和mouseout事件中。在mouseover事件下就是包括鼠標從哪來,在mouseout下就是包括鼠標到哪去。

生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 亚洲精品在线免费 | 99免费精品视频 | 日韩午夜高清 | 爱爱视频网 | 久久福利社 | 久久久久久黄 | 中文字幕在线三区 | 国产三级电影在线播放 | 日韩高清在线 | 热99在线观看 | 91香焦视频| 国产免费一级片 | 欧美在线色 | 91看片免费在线观看 | 麻豆专区一区二区三区四区五区 | 精品成人一区二区 | 99这里只有精品99 | 99在线免费观看 | av在线免费网址 | 99精品在线观看 | 亚洲污视频 | 中文字幕 视频一区 | 国产欧美精品一区二区三区 | 在线观看亚洲视频 | 黄色小视频在线看 | 日日艹| 欧洲成人精品 | 色综合社区| 国产精品91一区二区三区 | 久久久国产一区二区三区 | 亚洲成av人影片在线观看 | 欧美精品一区二区三区蜜桃视频 | 欧美成人在线免费 | 欧美日韩一级二级三级 | 久久久久国产精品 | 成人福利网站在线观看 | 亚洲成人av一区二区 | 国产精品成人一区二区网站软件 | 国产高清视频在线观看 | 成年网站在线观看 | 欧美一区二区三区精品免费 |