關鍵詞:
1、cancelBubble(HTML DOM Event 對象屬性) :如果事件控制代碼想阻止事件傳播到包容對象,必須把該屬性設為 true。
2、stopPropagation(HTML DOM Event 對象方法):終止事件在傳播過程的捕獲、目標處理或起泡階段進一步傳播。調用該方法後,該節點上處理該事件的處理常式將被調用,事件不再被指派到其他節點。
3、 preventDefault(HTML DOM Event 對象方法)通知瀏覽器不要執行與事件關聯的預設動作。
好了,測試代碼如下:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><br /><html xmlns="http://www.w3.org/1999/xhtml"><br /> <head><br /> <title> JavaScript阻止時間冒泡傳遞測試 </title><br /> <meta name="author" content="http://blog.csdn.net/xxd851116" /><br /> <mce:style type="text/css"><!--<br />div {padding:10px; border:1px solid #EEE;margin:10px;}</p><p>--></mce:style><style type="text/css" mce_bogus="1">div {padding:10px; border:1px solid #EEE;margin:10px;}<br /> </style><br /> </head><br /><body onclick="alert('Body Click');"><br />這是頂層Body<br /><div onclick="alert('Div 1 Click');"><br /> 這是第1層<br /> <div onclick="alert('Div 2A Click');">這是第2層A<br /><input type="button" onclick="alert('Button Click');stopBubble(event)" value="點擊測試時間冒泡(阻止)!" /><br /> </div><br /> <div onclick="alert('Div 2B Click');">這是第2層B<br /><input type="button" onclick="alert('Button Click');" value="點擊測試時間冒泡(未阻止)!" /><br /> </div><br /></div><br /><mce:script type="text/javascript"><!--<br />var all = document.getElementsByTagName("*");<br />for (var i = 0; i < all.length; i++) {<br /> //監聽使用者滑鼠,當移動到元素上時<br /> //為元素加上紅色邊框<br /> all[i].onmouseover = function(e) {<br /> this.style.border="1px solid red";<br /> stopBubble(e);<br /> }<br /> //檢查使用者滑鼠,當移開元素時<br /> //刪除我們加上的邊框<br /> all[i].onmouseout = function(e) {<br /> this.style.border = "1px solid #EEE";<br /> stopBubble(e);<br /> }<br />}<br />function stopBubble(e) {<br />var e = e ? e : window.event;<br />if (window.event) { // IE<br />e.cancelBubble = true;<br />} else { // FF<br />//e.preventDefault();<br />e.stopPropagation();<br />}<br />}<br />// --></mce:script><br /> </body><br /></html><br />