1.1. YAHOO工具庫提供的方法
l namespace
用於創建一個全局的命名空間,使用YUI時,首先會自動創建widget,util,example三個命名空間,使用時也可以自定義命名空間。類似於在程序中建了了一個static變量。
l lang
javascript擴展的語言工具,用於判別對象的類型。
l lang.extend
用於從一個對象上擴展出另一個對象,模擬了類的繼承的方式,但不同的是,在創建子對象時,父對象的構造函數不會自動調用。父對象的引用存放在了子對象的supperclass中,構成了一個鏈狀繼承關係。在2.2.2的版本中,YAHOO.lang.extend和YAHOO.extend指向同一函數對象。
l lang.augment
將一個對象的屬性(部分或全部)複製到另一個對象,但並非真正意義上的複製,只是一種引用。YAHOO.augment=YAHOO.lang.augment。
l log
用來調試的一個工具,將信息顯示到log控件。
l env
環境信息和YUI組件信息
l YUI_config.listener
可以定義自己的回調函數,當有新的YUI組件加載到頁面時將會調用YUI_config.listener指向的函數。
2. YUI提供的Dom操作
特點:對於大部分DOM操作提供了批量操作的功能,而對用戶只需使用統一的函數接口就能完成單個或批量的操作,主要得益於DOM內部的batch方法。
2.1. Element的查找
YAHOO.util.Dom.get(element)
調用document.getElementById(element),獲取指定的頁面元素。
YAHOO.util.Dom.getElementsBy(method,tagName,rootNode)
在rootNode的子節點中按照用戶提供的method方法在所有標籤爲tagName的element中查找符合條件的節點。rootNode不指定則在整個Document中查找,method是一個method(elementID)類型的函數對象,該函數對象的返回值爲Boolean值。
YAHOO.util.Dom.getElementsByClassName(className, tagName, rootNode)
返回指定根節點下所有標籤爲tagName,class爲className的DOM節點數組。根節點爲可選參數,不指定時在整個頁面中查找
YAHOO.util.Dom.inDocument(el)
判斷元素el是否在當前的DOM中,支持批量操作。
2.2. 樣式控制和訪問
YAHOO.util.Dom.hasClass(element, className)
判斷element標籤上是否指明瞭className的class,支持批量操作
YAHOO.util.Dom.addClass(element, className)
給指定標籤增加名爲className的class,支持批量操作.
YAHOO.util.Dom.removeClass(element, className)
刪除element上的名爲className的class,支持批量操作
YAHOO.util.Dom.replaceClass(element, oldClassName, newClassName)
替換element上的oldClassName樣式爲newClassName,支持批量操作
YAHOO.util.Dom.getStyle(element, property)
獲取element的style中的property屬性,支持批量操作
YAHOO.util.Dom.setStyle(element,property,pValue)
設置element的style的property屬性爲pValue,支持批量操作
注:本節中的class指的是CSS中定義的class。
2.3. 位置控制和訪問
位置控制的相關函數
YAHOO.util.Dom.setX
YAHOO.util.Dom.setY
YAHOO.util.Dom.setXY
YAHOO.util.Dom.getX
YAHOO.util.Dom.getXY 返回元素座標 [ left,top ]
YAHOO.util.Dom.getRegion
獲取元素的座標Region對象{left,top,right,bottom}
可支持批量操作
獲取頁面可視面積的高度和寬度
YAHOO.util.Dom.getClientWidth
YAHOO.util.Dom.getClientHeight
獲取Document的高度和寬度
YAHOO.util.Dom.getDocumentWidth
YAHOO.util.Dom.getDocumentHeight
獲取頁面可視區域的高度和寬度(不包含滾動條)
YAHOO.util.Dom.getViewportHeight
YAHOO.util.Dom.getViewportWidth
Region對象:{left,top,right,bottom}
YUI提供的一個對象,用於完成多個矩形區域間的計算(如相交,包含。
YAHOO.util.Region.contains(region)
判斷是否包含了region區域
YAHOO.util.Region.getArea
計算面積
YAHOO.util.Region.intersect(region)
計算與region區域的交迭區域
YAHOO.util.Region.union(region)
計算與region區域求並集(即包含兩個區域的最小區域)
Point對象:{x,y}
YUI提供的對象,用於定義座標點。
3. YUI提供的element工具
YUI提供了一組操作頁面element的工具,是對標準HTML elements的一種封裝,能夠直接通操作element的實例,使得增加監聽器,操作DOM,設置/獲取element的屬性等工作變得很簡單。部分方法是直接調用YUI的DOM工具集提供的方法,如對class操作的相關方法、獲取element的相關方法等等,在此不再重複。
YAHOO.util.Element(elementId)
創建element,如果elementId在Document中還不存在,仍然可以通過YUI對他進行屬性設置,增加監聽器等操作, Element工具集會自動等到該elementId可用後執行這些操作,實際上真正的操作是等到contentReady事件發生後才進行的。
YAHOO.util.Element.appendChild(child)
在DOM結構中element下增加子節點
YAHOO.util.Element.getElementsByTagName(tag)
獲取tagName爲tag的所有頁面元素
YAHOO.util.Element.hasChildNodes
判斷是否具有子節點
YAHOO.util.Element.insertBefore(element, before)
在元素before前插入element
YAHOO.util.Element.removeChild(child)
刪除DOM中元素的child子節點
YAHOO.util.Element.replaceChild (newNode , oldNode)
替換子節點oldNode爲newNode
4. YUI提供的Event工具集
YUI提供的Event工具集簡化了瀏覽器中事件驅動程序的編寫,提供了一種簡單的接口來定製事件和檢查瀏覽器中的event對象。YUI事件工具集提供了自定義事件對象(Custom Event),通過自定義事件對象可以“發佈”自己感興趣的時刻或事件,頁面中的YUI組件能夠響應這些自定義的事件並做出迴應。
YUI對事件響應的順序:通過YUI Event工具集添加的事件,默認是在冒泡過程中執行事件處理函數的。從DOM節點上來說,是從子節點向根節點響應事件。
Event需要的引入
<!-- Dependency -->
build/yahoo/yahoo-min.js
<!-- Event source file -->
build/event/event-min.js
Event和Custom Event分別定義在YAHOO.util.Event和YAHOO.util.CustomEvent中
Event工具集提供的方法
YAHOO.util.Event.addListener(element,eventType,fn,obj,override)
參數:
element:爲綁定事件的元素id,可以是一個數組,以支持批量操作
eventType:爲事件類型
fn:爲事件響應的回調函數
obj:當override爲true時,爲回調函數傳入的參數對象;當override爲false時,該參數被忽略。
override:
返回值類型:Boolean
功能:給指定的element綁定事件響應函數
YAHOO.util.Event.removeListener:function(element,eventType,fn)
參數:
element:爲綁定事件的元素id,
eventType:事件類型
fn:爲事件響應函數
返回值類型:Boolean
功能:給指定的element解除綁定事件
YAHOO.util.Event.purgeElement ( el , recurse , sType )
參數:
el:爲綁定事件的元素id,
recurse:Boolean值,是否解除子節點的事件綁定
sType:事件類型
返回值類型:Boolean
功能:給指定的element解除綁定的同一類型的事件,也可以解除子節點上綁定的這一類型的事件
YAHOO.util.on
addListener的函數別名
YAHOO.util.Event.onAvailable( p_id , p_fn , p_obj , p_override )
參數:
p_id:爲綁定事件的元素id,
p_fn:爲事件響應函數
p_obj:同addListener的obj參數
p_override:同addListener的override參數
返回值類型:無
功能:當指定的element的p_id出現時,執行事件響應函數。如果在頁面初始化之前執行這一函數,當頁面加載時(可能還未完成時),就會執行響應的事件響應函數;如果放在頁面加載之後執行這一函數,將以固定的時間輪詢,當element可用時響應這一事件。這個輪詢的的時間是可以配置的,缺省的時間是10秒一次。
YAHOO.util.Event.onContentReady( p_id , p_fn , p_obj , p_override )
參數:
p_id:爲綁定事件的元素id,
p_fn:爲事件響應函數
p_obj:同addListener的obj參數
p_override:同addListener的override參數
返回值類型:無
功能:與%3