天天看點

什麼是原始事件模型

這幾天一直在寫 原始事件模型 卻弄不清楚到底是什麼意思.今天上網查了查..總算略知一二..我把看到的東西拿過來給大家看看..

原位址:http://www.blogjava.net/dhcn/archive/2008/01/08/js_eventmodel_summary.html

作者: 簡單

[size=x-large]JS事件模型小結 [/size]

前幾天看dojo的文檔,其中多次提到DOM2事件模型,以前學習這部分的内容,主要憤慨于IE的不相容性了,現在對于DOM2事件模型的概念又有些模糊,是以翻出了JS權威指南(V4)又複習了一下,簡單作一小結。

JS權威指南中将JS事件模型分為四種

1、原始事件模型:屬性事件處理模式

2、标準事件模型:DOM2對其作了标準化

3、IE事件模型(IE5.5\IE6)

4、 Netscape事件模型

[size=large]原始事件模型 [/size]

也就是基本事件處理,其實我們大多數人使用的JS事件處理模式都是這種代碼方式。

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

事件程式的注冊可以以下幾種方式:

1、JS代碼作為HTML性質值

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

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

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

作為JS屬性的例子:

html背景:

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

第一種指派方式: 第二種指派方式:

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" target="_blank" rel="external nofollow"  onmouseover="window.status='help';return true;">help</a>
           

JS函數運作在詞法作用域中,也就是定義他們的作用域中,是以作為HTML性質的JS事件處理程式,作用域鍊比較特殊,其頭是調用對象(既這段JS代碼),下一個對象是觸發事件的對象既event.currentTarget,其後就是其包容層元素。整個作用域鍊的精确構成依賴于具體實作。

繼續閱讀