1. 程式人生 > >學習Enterprise Library

學習Enterprise Library

     事件是使用者在訪問頁面時執行的操作。當瀏覽器探測到一個事件時,比如滑鼠單擊或按鍵,它可以觸發與這個事件相關聯的JavaScript物件,這些物件稱為事件處理程式(event handler)。事件處理程式名稱全是小寫的,以下是一些常用事件的小結:

   窗體事件

     onload 事件 :當頁面完成載入時觸發

     一般用法 

     window.onload=functionName;  

     在觸發一個事件時可以這麼做,但是促發多個事件時不能這樣寫。以下是很多人都會犯的錯誤:

     window.onload=function1;

     window.onload=function2;

     window.onload=function3;

     這樣寫程式碼是不對的,第二次設定會覆蓋第一次的,這時只有function3會被執行。如果要連續執行兩次以上的函式,應該這樣寫:

     window.onload=function (){

       firstfunction();

       secondFunction();

    }

     不過,另一種載入的方式將更好,無論你在頁面載入時要執行多少個函式。外國的一個人寫的,確實好用。

function addLoadEvent(func) {
    var oldonload = window.onload;
    if

(typeof oldonload == 'function' ) {
        window.onload = function () {
            if (oldonload) {
                oldonload();
            }
            newFunction();
        }
    }
    else {
        window.onload = newFunction;
    }
}

1. var oldonload = window.onload;

宣告一個新變數 oldonload 。如果已經設定了 window. Onload ,就將它的值儲存在這裡。如果沒有設定,這一行也沒有什麼壞處。

2. if (typeof oldonload == 'function' ) 檢查 oldonload 的變數型別。如果已經設定了 window.onload, 那麼它應該是一個函式呼叫(否則,就是空的)。

3. window.onload = function () {
            if (oldonload) {
                oldonload();
            }
            newFunction();
        }
這些程式碼重新設定 window.onload 的值來完成兩種操作:它之前所做的操作以及引數中傳遞的新函式, window.onload 事件處理程式設定為一個匿名函式。如果函式有值,就執行 window.onload 原本應該完成的操作。但是在函式完成之前,還要執行 newFunction();

4. window.onload = newFunction; 如果 oldonload 不是函式,也就是說它是未定義的。所以,就執行新函式。

onunload 事件: 當用戶離開頁面(關閉或跳轉)時觸發

        這個事件一般不要去用,反正我很反感。但是有一種可用情況,當你需要清除頁面快取時可以這樣用:(FireFox等瀏覽器會把瀏覽過的頁面儲存起來)  window.onunload=function (){}

        onresize 事件: 當調整網頁大小時重新繪製動態內容(重新載入頁面),現在用的很少。

        onmove 事件: 視窗移動時觸發

        onabort 事件: 當用戶取消網頁上的影象載入時,會觸發onabort事件。這種事件不太常用,也並非所有瀏覽器都支援。

        onerror 事件: 當頁面發生javascript錯誤時觸發,一般在設計Web時要設定onerror=null,避免將錯誤資訊顯示給使用者。

        onfocus 事件: 頁面成為最前面的活動窗體時觸發。可以用來控制窗體堆放。

        onblur 事件: 如果希望一個視窗總是出現在所有其他視窗前面時可以使用。程式碼可以這樣寫:

window.onblur = moveUp;
function moveUp() {
    self.focus();

}

    滑鼠事件

        onmousedown事件:點選滑鼠時觸發

        onmouseup 事件:釋放滑鼠是觸發

        onmousemove事件:移動滑鼠時觸發

        onmouseover 事件:當滑鼠移進入任何註冊了onmouseover事件處理程式區域時觸發

        ondbclick 事件:雙擊任何註冊了onmouseover事件處理程式區域時觸發

        onclick 事件:單擊

         滑鼠事件例項

< html xmlns ="http://www.w3.org/1999/xhtml">

< head runat ="server">

    < title ></ title >

    < script type ="text/javascript" language ="javascript">

        function handle(oEvent) {

           var oDiv = document.getElementById("display" );

           if (window.event)

               oEvent = window.event;

           oDiv.innerHTML += oEvent.type + "<br/>" ;

       }

       window.onload = function () {

            var oImg = document.getElementsByTagName("img" )[0];

           oImg.onmousedown = handle;

           oImg.onmouseup = handle;

           oImg.onmouseover = handle;

           oImg.onmouseout = handle;

           oImg.onclick = handle;

           oImg.ondblclick = handle;

       }

    </ script >

</ head >

< body >

  < div >

    < img src ="images/2.jpg" border ="0" />

    < div id ="display"></ div >

  </ div >

</ body >

</ html >

    表單事件處理

        onsubmit 事件:提交表單時觸發

        onreset 事件:重置

        onchange 事件:當用戶修改表單欄位時觸發。這可以用來立即驗證輸入資訊。

        onselect 事件:如果使用者選擇了一個input或textarea表單區域中的文字,就會觸發。

        onclick 事件:表單中同樣常用

        onblur 事件:應用於input text時,當用戶在改變欄位之後離開時,會觸發onblur和onchange事件。

        onfocus 事件:焦點事件

    鍵盤事件

onkeydown 事件:按下鍵時觸發

onkeyup :釋放鍵時觸發

onkeypress 事件:當用戶按下一個鍵並釋放時觸發。

對於鍵盤事件而言,最重要的並不是事件的名稱,而是所按的鍵是什麼。由於IE 瀏覽器沒有charCode 屬性,而keyCode 只有在keydownkeyup 事件發生時才與標準的DOMkeyCode 相同,在keypress 事件中等同於charCode, 因此常採用如下方法:

oEvent.charCode=(oEvent.type=="keypress" )?oEvent.keyCode:0;

之所以通常不採用keyCode 是因為它表示鍵盤按鍵,而不是輸出字元,因此輸出“a ”和“A ”時,keyCode 值是相等的,charCode 則以字元為區分。另外在keypress 事件中,標準DomkeyCode 值始終為0 ,如下例:

< html xmlns ="http://www.w3.org/1999/xhtml">

< head runat ="server">

    < title ></ title >

    < script type ="text/javascript" language ="javascript">

       function handle(oEvent) {

           var oDiv = document.getElementById("display" );

           if (window.event) {

               oEvent = window.event;

               oEvent.charCode=(oEvent.type=="keypress" )?oEvent.keyCode:0;

           }

           oDiv.innerHTML += oEvent.type + ":charCode:" + oEvent.charCode + " keyCode:" + oEvent.keyCode + "<br/>" ;

       }

       window.onload = function () {

           var oTextArea = document.getElementsByTagName("textarea" )[0];

           oTextArea.onkeypress = handle;

           oTextArea.onkeydown = handle;

       }

    </ script >

</ head >

< body >

  < div >

    < textarea rows ="4" cols ="50"></ textarea >

    < div id ="display"></ div >

  </ div >

</ body >

</ html >