動態HTML

動態HTML並不是你可以進行談論的一個單獨的技術,“這是DHTML”,這個術語包含讓一個網頁動態的很多技術:允許你創建新元素而不用更新網頁的勻速,改變這些元素的顏色,讓它們擴展,相容並且在螢幕上放大、縮小。

 

DHTML使用HTMLDOMCSS以及用戶端的腳本語言——JavaScript——來給傳統的靜態媒體一個新生。在前面的章節中,我們知道了我們可以使用JavaScript來掌控網頁中的部分內容來方便我們自己的使用。DHTML提供了更多複雜問題的解決方法。

 

在這一章的內容中,我們將探索幾個我們為了創建有效的用戶交互DHTML而使用的工具,之後我們會討論幾個簡單的小工具,目的是為了以後的內容做準備。

 Handling Events

任何用戶和網頁之間的交互——無論是使用滑鼠或者是在鍵盤上敲擊——都會讓流覽器產生一個event(事件)。

 

有的時候,我們希望我們的代碼能對這些交互操作有所反應,所以,我們就會監聽這些事件,讓我們知道什麼時候我們的代碼可以起作用。

 解決方法

有兩種方法可以處理事件(handle events):簡短方法(short way),W3C方法。每一種方法都有兩面,兩種方法都允許你一個元素發生某個事件的時候執行特定的功能。

 簡短方法:使用event handlers 

處理一個事件的簡單的方法就是使用DOM 0事件處理器,正如我們在第5章中討論DOM0屬性捷徑時說過的一樣,這些event handlers不是future-proof,但是它們確實比標準W3C事件監聽器有一定的優勢:

     目前所有的流覽器都支持DOM 0 event handler,而不需要其他的編碼分支

     DOM 0 event handler執行的每個功能都可以找到準確的event handler分配的元素(在後面的內容中你會明白,在W3C監聽器中這個功能不是永遠都可用的)

 

使用DOM 0 event handler的主要問題就是它們不能與多個腳本同時相容,每次你分配一個DOM 0 event handler,你就會覆蓋之前分配的那個event handler。這就會影響同一個元素需要event handler的多個腳本的操作。如果使用W3C,你可以對同一個元素使用任何數量的事件監聽器,並且隨時可以去掉其中的一個。

 

如果你確信自己的代碼與其他人的事件處理不會衝突(比如,你將事件放在你自己的腳本動態創建的元素上),那你使用DOM 0事件處理器是安全的。但是——所有的事情都是一樣的——如果可以的話,使用W3C肯定是更安全一些。

 

通過流覽器可以使用很多DOM 0事件處理器,表13.1 列出了最常用的handler

在使用DOM 0 事件處理器的時候,一旦你指向了一個元素,這個元素的事件你想處理,這只是一個簡單的將一些功能分配給適當的屬性的問題:

你會發現,在功能分配上(button.onclick=engage;),圓括號不跟隨功能的名稱。它們會很快執行功能,並且指定返回值(return value)作為event handler,通過忽略圓括號,你可以講function本身分配到handler。這也就意味著你無法直接給handling function提供意見(argument):function必須通過其他方式獲得它所需要的資訊。

      匿名功能(Anonymous Functions  

除了給一個已命名的function提供一個reference,你可以給一個event handler提供一個Anonymous Function

 

取決於你是否需要重新調用handling function(以及你自己的coding preferences),這種方法是編寫event handling code的一個比較簡單的方法。

 

Handling function返回的值取決於那個事件的默認行動(default action)是否發生,所以,在之前的代碼中,如果mybutton是一個超連結,當被點擊之後,它的默認行動就是導向它的href位置。通過返回falseengage function不會允許默認的行動發生,超連結導航也不會發生。如果返回的值是trueevent handling 功能的代碼執行以後默認的行動就會發生。

 

當一個事件發生之後,關於那個事件如何發生的、為什麼發生的,在哪里發生的,詳細的資訊都會寫入event object,在IE 中,它寫入的格式是window.event,但是在其他的流覽器中,它會以argument的形式提交給event-handling function。在handling funciton中,這點差異很容易分開:

 

Event object允許你瞭解很多詳細的資訊,比如哪個元素被點擊了,是否有關鍵的內容被點擊,事件的調整(比如,滑鼠點擊的時候,游標的位置在哪里),以及激發功能的事件類型。很多事件屬性名稱在不同流覽器中都是相同的,但是有些流覽器會有所不同。Mozillaevent property可以在Gecko DOM Reference中查看,而Mozillaevent property可以再MSDN中查看。對於那些在不同流覽器中名稱不同的property,想過的問題可以通過object detection來調整,在以後的內容中我們將進行詳細的講述。

推薦給同仁

Tell a Friend 

您想要瞭解更多的免費小竅門以便提升你的網站排名嗎?
請馬上聯繫我們網站管理員:
MSN: chenlinwu@cmmail.com 
Email: info@rank-ad.com