JavaScript--事件模型

來源:互聯網
上載者:User

標籤:

在各種瀏覽器中存在三種事件模型:原始事件模型( original event model),DOM2事件模型,IE事件模型.其中原始的事件模型被所有瀏覽器所支援,而DOM2中所定義的事件模型目前被除了IE以外的所有主流瀏覽器支援.

1.原始事件模型

其事件類型:分為"輸入事件(如onclicki)"和"語義事件(如onsubmit)"

事件程式的註冊可以以下幾種方式: 
         1、JS代碼作為HTML性質值

<input type="button" value="Press me" onclick="alert(‘thanks‘);"

2、事件處理常式作為JS屬性

  附註:文檔中的每個HTML元素在文檔樹中都有一個相應的JS對象,這個JS對象的屬性對應於那個HTML元素的性質,無論作為HTML性質的JS代碼還是作為JS屬性的時間處理常式,其本身的屬性都是函數"function".

<form name="f1"> 
<input name="b1" type="button" value="Press Me"/> 
</form>

第一種賦值方式:

document.f1.b1.onclick=function(){alert(‘thanks‘);};

第二種賦值方式:

function plead(){window.status="Please Press Me!";} 
document.f1.bi.onmouseover=plead;

作為JS屬性的事件處理常式可以用JS屬性顯式調用

document.myfrom.onsubmit();

事件處理常式可以返回fale來阻止瀏覽器執行事件的預設動作,常用的如對onsubmit的操作。例外是 
對超連結mouseover的window.status顯示事件的阻擋,是返回true.例如:

<a href="help.htm" onmouseover="window.status=‘help‘;return true;">help</a>

2.DOM2事件模型

這個模型參考了IE的氣泡模型而制定的,它是由w3c制定的規範.在原始模型中事件一旦發生就直接呼叫事件控制代碼,沒有其它的事件傳播過程.而在DOM2模型中事件有一個特殊的傳播過程,分為三個階段: 
(1)capturing phase:事件被從document一直向下傳播到目標元素,在這過程中如果有哪個祖先元素對該事件感興趣可以註冊自己的處理函數. 
(2)target phase:事件到達目標元素,執行目標元素的事件處理函數. 
(3)bubbling phase:事件從目標元素上升一直到達document,雖然所有的事件類型都會經曆captruing phase階段但是只有部分事件會經曆bubbling phase階段,例如submit事件就不會被上浮. 
在整個的事件傳播過程中可以調用event.stopPropagation()來停止事件的傳播,調用preventDefault()來阻止瀏覽器的預設行為.

addEventListener("eventType","handler","true!false");

removeEventListner("eventType","handler","true!false");

3.IE模型

IE模型也提供了一個event對象封裝了事件的詳細資料,但是IE不把該對象傳入事件處理函數,由於在任意時刻只會存在一個事件,所以IE把它作為全域對象window的一個屬性,IE中的事件傳播模式對應於DOM2的第二和第三階段,首先執目標元素的處理函數,然後向上傳播到達document,ie中只能能捕捉滑鼠事件,而DOM2中可以捕捉所有的事件,IE中註冊和刪除事件處理函數的方法也不同於DOM2.

事件處理函數的註冊和刪除是通過元素的attachEvent( "eventType","handler") and detachEvent("eventType","handler" ),與dom2不同的是eventType有on首碼

JavaScript--事件模型(轉)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.