event.relatedTarget
假設A國與B國相鄰,中間有一條邊境線。
當某人從A國跨過國境線進入B國,那麼兩個國家就產生了關聯。
不同角度可以有不同的理解,例如以下兩種闡述:
(1).以A國角度看,此人進入B國。
(2).以B國角度看,此人來自A國。
對於JavaScript中的有些事件涉及的元素,也有類似的關係。
而事件物件的relatedTarget屬性就是用來相關聯的元素,分析如下:
(1).如果是mouseover事件,B元素註冊mouseover事件處理函式,滑鼠指標從A元素移入B元素,事件觸發,那麼從B元素角度來看,滑鼠指標來自於A元素,那麼relatedTarget屬性返回A元素。
(2).如果是mouseout事件,B元素註冊mouseout事件處理函式,滑鼠指標從B元素移入A元素,事件觸發,那麼從B元素角度來看,滑鼠指標進入A元素,那麼relatedTarget屬性返回A元素。
特別說明:
(1).都是以註冊事件處理函式的元素為角度看。
(2).此屬性僅對mouseover事件和mouseout事件有效。
語法結構:
[JavaScript] 純文字檢視 複製程式碼event.relatedTarget
瀏覽器支援:
(1).IE瀏覽器支援此屬性。
(2).edge瀏覽器支援此屬性。
(3).谷歌瀏覽器支援此屬性。
(4).opera瀏覽器支援此屬性。
(5).火狐瀏覽器支援此屬性。
(6).safria瀏覽器支援此屬性。
程式碼例項:
[HTML] 純文字檢視 複製程式碼執行程式碼<!DOCTYPE html> <html> <head> <meta charset=" utf-8"> <meta name="author" content="http://www.softwhy.com/" /> <title>螞蟻部落</title> <style type="text/css"> #box{ width:150px; height:150px; background-color:blue; } #ant{ width:80px; height:50px; background-color:red; } </style> <script> window.onload=function(){ let ant=document.getElementById("ant"); ant.onmouseover=function(ev){ this.innerHTML=ev.relatedTarget.id; } } </script> </head> <body> <div id="box"> <div id="ant"></div> </div> </body> </html>
程式碼執行效果截圖如下:
程式碼分析如下:
(1).為子元素註冊mouseover事件處理函式。
(2).當滑鼠從父元素移入子元素的時候,那麼從子元素的視角看,父元素與其產生關聯。
(3).那麼,relatedTarget的返回值是父元素物件。
[HTML] 純文字檢視 複製程式碼執行程式碼<!DOCTYPE html> <html> <head> <meta charset=" utf-8"> <meta name="author" content="http://www.softwhy.com/" /> <title>螞蟻部落</title> <style type="text/css"> #box{ width:150px; height:150px; background-color:blue; } #ant{ width:80px; height:50px; background-color:red; } </style> <script> window.onload=function(){ let ant=document.getElementById("ant"); ant.onmouseout=function(ev){ this.innerHTML=ev.relatedTarget.id; } } </script> </head> <body> <div id="box"> <div id="ant"></div> </div> </body> </html>
對於mouseout事件也是相同的道理。
以註冊事件處理函式的子元素視角來看,滑鼠指標移入了它的父元素。
很自然relatedTarget屬性的返回值是父元素物件。