国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

onmouseover和onmouseout的一些問題思考

2024-05-06 15:50:34
字體:
供稿:網(wǎng)友
這兩個(gè)事件的觸發(fā)表現(xiàn)真的就是你想要的嗎?在IE下確實(shí)有你需要的兩個(gè)這樣事件:onmouseenter 和 onmouseleave。但很不幸FF等其他瀏覽器并不支持

一個(gè)DIV層,當(dāng)鼠標(biāo)移進(jìn)的時(shí)候會觸發(fā)onmouseover,移出的時(shí)候會觸發(fā)onmouseout。

onmouseover和onmouseout的一些問題思考

 
很簡單的邏輯,這也是我們想要的!但隨之煩惱也就來了:onmouseover并不會只在移進(jìn)時(shí)才觸發(fā),onmouseout也不會只在移出時(shí)才觸發(fā)!鼠標(biāo)在DIV里面移動(dòng)時(shí)也會可能觸發(fā)onmouseover或onmouseout。

onmouseover和onmouseout的一些問題思考

 
在上圖中,對于'A'來說:當(dāng)鼠標(biāo)進(jìn)入'A'(路徑'1′)時(shí)那么就會觸發(fā)'A'的onmouseover事件;接著鼠標(biāo)移動(dòng)到'B'(路徑'2′),此時(shí)'A'會觸發(fā)onmouseout(先)和onmouseover(后)事件。

由此可見,如果HTML元素(‘A'層)內(nèi)還有其他元素(‘B','C'層),當(dāng)我們移動(dòng)到這些內(nèi)部的元素時(shí)就會觸發(fā)最外層(‘A'層)的onmouseout和onmouseover事件。

這兩個(gè)事件的觸發(fā)表現(xiàn)真的就是你想要的嗎?也許你需要一個(gè)只在移進(jìn)時(shí)才觸發(fā)的,一個(gè)只在移出時(shí)才觸發(fā)的事件,不管其內(nèi)部是否還有其他元素….

解決方案

在IE下確實(shí)有你需要的兩個(gè)這樣事件:onmouseenter 和 onmouseleave。但很不幸FF等其他瀏覽器并不支持,只好模擬實(shí)現(xiàn):

復(fù)制代碼 代碼如下:


document.getElementById('...').onmouseover = function(e){
if( !e ) e = window.event;
var reltg = e.relatedTarget ? e.relatedTarget : e.fromElement;
while( reltg && reltg != this ) reltg = reltg.parentNode;
if( reltg != this ){
// 這里可以編寫 onmouseenter 事件的處理代碼
}
}
document.getElementById('...').onmouseout = function(e){
if( !e ) e = window.event;
var reltg = e.relatedTarget ? e.relatedTarget : e.toElement;
while( reltg && reltg != this ) reltg = reltg.parentNode;
if( reltg != this ){
// 這里可以編寫 onmouseleave 事件的處理代碼
}
}


備注:

W3C在mouseover和mouseout事件中添加了relatedTarget屬性

•在mouseover事件中,它表示鼠標(biāo)來自哪個(gè)元素
•在mouseout事件中,它指向鼠標(biāo)去往的那個(gè)元素
而Microsoft在mouseover和mouseout事件中添加了兩個(gè)屬性

•fromElement,在mouseover事件中表示鼠標(biāo)來自哪個(gè)元素
•toElement,在mouseout事件中指向鼠標(biāo)去往的那個(gè)元素
發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表

圖片精選

主站蜘蛛池模板: 辽阳市| 千阳县| 鹿泉市| 清丰县| 噶尔县| 剑河县| 太和县| 平山县| 黎城县| 新乡市| 花莲县| 灌南县| 颍上县| 称多县| 峨山| 烟台市| 尼勒克县| 灵川县| 仙桃市| 佳木斯市| 班玛县| 宁城县| 通化县| 安吉县| 商河县| 上饶市| 长葛市| 阿鲁科尔沁旗| 巢湖市| 邢台县| 莆田市| 建宁县| 通河县| 绍兴市| 白河县| 全椒县| 囊谦县| 呈贡县| 县级市| 抚松县| 石台县|