YAHOO工具庫提供的方法

bulletming發表於2019-05-07

From : http://zuozheng456.blog.163.com/blog/static/23690056200921044354522/

1.1 YAHOO工具庫提供的方法 2009-03-10 16:43

分類:YUI
字號:    

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 --&gt

build/yahoo/yahoo-min.js

<!-- Event source file --&gt

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引數

返回值型別:無

功能:與onAvailable類似,但不同的是事件響應函式是等到element可以安全的修改的時候才響應。

 

YAHOO.util.Event.onDOMReady ( p_fn , p_obj , p_scope )

引數:

p_fn:為事件響應函式

p_obj:同addListener的obj引數

p_scope:同addListener的override引數

返回值型別:無

功能:當DOM第一次可用時執行響應函式。

 

YAHOO.util.Event.preventDefault ( event)

引數:

event:事件物件

返回值型別:無

功能:阻止事件的預設行為發生。

 

YAHOO.util.Event.getListeners ( el , sType )

引數:

el:HTML element

sType:事件型別,String型別

返回值型別:Object{

type:事件型別

 fn:addListener新增的事件響應函式

 obj:提供給事件響應函式的引數物件

 adjust:否獲取預設的事件監聽器

 index:UI事件監聽器列表中的位置

}

功能:阻止事件的預設行為發生。

 

YAHOO.util.Event.getTime( event)

引數:

event:事件物件

返回值型別:Date物件

功能:獲取事件發生時的時間。

 

YAHOO.util.Event.getTarget(ev , resolveTextNode)

引數:

evt:事件物件

resolveTextNode:

返回值型別: HTML element

功能:獲取事件發生時的頁面標籤。對於IE即window.event.srcElement

 

 

5.            YUI提供的CSS樣式

5.1.     Fonts

字型的規範樣式,需要引入build/fonts/fonts-min.css

5.2.     Reset

規範了所有HTML element的預設樣式,需要引入build/fonts/reset-min.css

5.3.     Grids

提供了用於頁面排版的CSS樣式,需要引入build/fonts/grids-min.css

 

6.            YUI元件

6.1.     Connection Manager

提供了訪問XMLHttpRequest物件的一個簡單介面

物件定義:

YAHOO.util.Connect.asyncRequest

Connection的引入:

<!-- Dependency --&gt

build/yahoo/yahoo-min.js

build/event/event-min.js

build/connection/connection-min.js

Connection的使用

1.     建立物件

var transaction = YAHOO.util.Connect.asyncRequest('GET', sUrl, callback, null);

第一個引數:指明http請求的方式,可用的方式包括GET、POST、HEAD、PUT、DELETE,但PUT和DELETE可能在一些A級瀏覽器上不支援。

第二個引數:請求的URL

第三個引數:回撥函式,用於伺服器返回資料時呼叫的客戶端處理程式

第四個引數:POST方式時,提供給URL的POST引數資訊。

[注]:A級瀏覽器A-Grade browsers是YUI對瀏覽器的一個等級劃分,具體劃分原則詳見http://developer.yahoo.com/yui/articles/gbs/index.html

2.     定義回撥函式

l       在非同步事物中,可以建立回撥函式處理伺服器的響應和相關資料,如果你不關心伺服器的返回資訊,也可以忽略這些回撥函式,所有這些回撥函式物件都是可選的,然而在大多數情況下,應該至少提供以下三個回撥函式:

success:伺服器做出有效響應時的回撥函式

failure:伺服器響應了但提供了錯誤資訊時的回撥函式

argument:success和failure為了處理返回資訊需要的引數,可以是物件、字串、數字或者包含了資料的陣列。

l         在使用YAHOO.util.Connect.setForm上載檔案時,需要定義upload回撥函式代替success和failure

l         在回撥函式中this將失去作用範圍,這種情況下需要透過一個指向父物件的引用的引數來訪問物件的成員。為了能夠使用物件的方法作為回撥函式,並維持成員的作用範圍,需要定義回撥函式物件的成員scope,作為this的值。

6.2.     Button

物件定義:YAHOO.widget.Button

與傳統HTML Form的按鈕類似,不同的是它的label可以與 value不一致。還可以建立帶選單的按鈕,或者radio button、checkbox

分類:

可以建立幾種型別的按鈕:

button:普通的下壓式按鈕,可以在按鈕按下時執行使用者指定的程式碼

link:按下時導航至相應的URL

submit:作用相當於form的提交按鈕

reset:form的reset按鈕

checkbox:

radio:

menubutton:按下時顯示隱藏按鈕

splitbutton:按下時執行命令或顯示選單的按鈕

 

使用Button必需的引入:

<!-- CSS --&gt

build/fonts/fonts-min.css

build/button/assets/button.css

 

<!-- Dependencies --&gt

build/yahoo-dom-event/yahoo-dom-event.js

build/element/element-beta-min.js

 

build/container/container_core-min.js

build/menu/menu-min.js

 

<!-- Source file --&gt

build/button/button-beta-min.js

初始化的方式:

1.使用替換的方式

constructor:YAHOO.widget.Button(sourceElementId,{配置集})

Button的構造器首先根據sourceElementId在DOM中查詢,一旦找到,就透過DOM的 replaceChild方法替換掉

 

2.使用新建的方式

constructor:YAHOO.widget.Button({配置集})

這種情況下根據配置集中指明的父id(Container)建立按鈕,如果配置集中沒有指明按鈕則使用YAHOO.Dom.generateId生成button的ID,

 

Button的配置集

屬性名稱

含義

備註

id

替換後的新的element id

 

label

按鈕上顯示的文字

 

check

按鈕選中/未選中的狀態

checkbox用到

type

指明button的型別

預設為button

container

按鈕的父id

使用新建方式時會用到

srcelement

使用替換方式時

 

menu

按鈕對應的選單YAHOO.widget.menu

 

title

按鈕title

沒有指定label時使用title

href

按鈕導航URL

僅在按鈕型別為link時有效

target

中的target

僅在按鈕型別為link時有效

tabindex

按tab切換焦點時的順序號

 

onclick

click事件的響應函式

onclick:{

fn: Function, // 事件的響應函式.

obj: Object, // An object to pass back to the handler.

scope: Object // The object to use for the scope of the handler.

} }

 

 

 

 

6.3.     ButtonGroup

物件定義:YAHOO.widget.ButtonGroup

ButtonGroup是一組按鈕,同組中只能有一個按鈕被選中。根節點為

 

 

6.4.     AutoComplete

使用者在文字輸入框中輸入文字時,該元件透過輸入的內容查詢符合輸入條件的內容,並顯示出所有符合條件的內容,供使用者能夠很快的完成正確的輸入。

 

AutoComplete的引入

<!-- 必須引入 --&gt

build/yahoo-dom-event/yahoo-dom-event.js

<!-- 可選: Connection(用到 XHR資料來源時需要的引入) --&gt

build/connection/connection-min.js

<!--可選: 用到動畫效果時需要的引入 --&gt

build/animation/animation-min.js

<!-- Source file --&gt

build/autocomplete/autocomplete-min.js

 

控制AutoComplete的配置集

屬性名稱

含義

備註

animVert

控制下拉框向下展開的動畫效果

 

animHoriz

控制下拉框水平方向展開的動畫效果

 

animSpeed

控制動畫的速度

 

delimChar

一行顯示多條記錄時的分隔符,可以是字串陣列或字串

 

maxResultsDisplayed

結果集的最大顯示行數

 

minQueryLength

進行查詢前的輸入的字元個數

 

queryDelay

使用者鍵入字元後多少秒開始查詢,預設0.5

 

autoHighlight

查詢出來的結果集顯示後,是否高亮顯示第一條,預設為true

 

highlightClassName

高亮顯示的樣式名,預設為yui-ac-highlight

 

prehightlightClassName

滑鼠移動到下拉框的一行上時,那一行的樣式,預設為yui-ac-prehighlight

 

useShadow

下拉框是否有陰影

 

useIFrame

下拉框欠套在一個iframe中,用於解決IE中覆蓋

 

forceSelection

限制輸入內容必須為查詢結果中的內容,如果不是則輸入內容被刪除

 

typeAhead

是否自動根據查詢結果的第一條補齊到autocomplete中

 

allowBrowserAutocomplete

是否允許瀏覽器提供的輸入框記憶功能,預設為false

 

alwaysShowContainer

是否始終顯示查詢結果的下拉框,預設為false

 

AutoComplete的使用

1          自定義事件(CustomEvent)

AutoComplete除了預設的事件外,還有自定義的事件,以下為AutoComplete用到的各種CustomEvent

事件回撥函式

含義

備註

textboxFocusEvent

輸入框獲得焦點的事件

textboxFocus

textboxKeyEvent 

按鍵彈起時的事件

textboxKey

dataRequestEvent

發出資料查詢請求時的事件

dataRequest

dataReturnEvent

資料查詢請求返回時的事件

dataReturn

dataErrorEvent

返回結果為空時的事件

dataError

containerExpandEvent

展開下拉框時的事件

containerExpand

typeAheadEvent

符合條件的結果自動用到第一條記錄補齊時的事件

typeAhead

itemMouseOverEvent

滑鼠移動到結果項上的事件

itemMouseOver

itemMouseOutEvent

滑鼠移出結果項的事件

itemMouseOut

itemArrowToEvent

移動到某一選擇項時的事件

itemArrowTo

itemArrowFromEvent

移出某一選擇項時的事件

itemArrowFrom

itemSelectEvent

選中某一選擇項的事件

itemSelect

unmatchedItemSelectEvent

forceSelection為false時,如果輸入了不符合查詢結果的內容時觸發本事件。

unmatchedItemSelect

selectionEnforceEvent

強制從結果集中選擇輸入項時觸發的事件

selectionEnforce

containerCollapseEvent

下拉框收縮時的事件

containerCollapse

textboxBlurEvent

輸入框失去焦點時的事件

textboxBlur

可以根據需要過載自定義的事件

例:輸入框獲得焦點時自動進行查詢,可以過載textboxFocusEvent

myAutoComp.textboxFocusEvent.subscribe(

      //傳送一個查詢條件為空的查詢請求

function(){myAutoComp.sendQuery("");}

);

2          格式化下拉框的輸出

如果返回的結果集中有多個屬性,可以透過過載formatResult來格式化結果項的輸出

oAutoComp.formatResult = function(oResultItem, sQuery) {

     var sMarkup = oResultItem[0] + " (" + oResultItem[1] + ")" ;

     return (sMarkup);

}

3          AutoComplete的資料來源

l         DS_JSArray

data = ["AAA","BBB","BCC"];

var myDataSource = new YAHOO.widget.DS_JSArray(data);

可以透過DWR的方式呼叫java方法獲得一字串陣列作為查詢的下拉框,並在回撥函式中可以直接使用,如:

l         DS_JSFunction

l         DS_XHR

對於JSArray方式取數時,AutoComplete可以自動根據輸入的內容查在JSArray中查詢符合條件的結果項,但在使用XHR方式時,YUI並沒有提供預設的查詢功能,必須由使用者透過控制URL引數方式來實現這一功能。

JSON方式:

使用JSON格式時,建立資料來源YAHOO.widget.DS_XHR時第一個引數為請求的URL,第二個引數為一陣列,這一陣列的第一條記錄表示結果集在JSON物件的哪個物件屬性下,如類似於下面結構的JSON物件

{

Result:{

data:[   {username:”Tom”,oldname:”Tom”,age:12”},

{username:”Jack”,oldname:”Jack”,age:16”}

]

}

}

如果是要查詢username則結果集應該表示為”Result.data”,

第二條記錄為搜尋的主鍵,同上面的例子中如果是要查詢出符合條件的username,則第二個陣列應為”username”,如果返回的結果集中還需要返回oldname屬性,則應該指名陣列的第三條記錄”oldname”,後面還可以指定更多的需要返回的屬性。

因此第二個陣列物件引數可以用以下方法表示:

[結果物件,搜尋的主鍵,額外的返回屬性1,…額外的返回屬性N]

function initAutocomplete(){

      var myDataSource1 = new YAHOO.widget.DS_XHR(

"./queryUsername.action",

["data","username"]);

      myDataSource1.responseType = YAHOO.widget.DS_XHR.TYPE_JSON;

      //myDataSource1.scriptQueryAppend = "output=json&results=100";

      var AutoComp = new YAHOO.widget.AutoComplete("user_username",

"usernameContainer", myDataSource1);

      oAutoComp.dataRequestEvent.subscribe(

function(oSelf,sQuery){

myDataSource1.scriptQueryParam = "username";

});

}

 

XML方式:

應用方式與JSON方式類似,只是將reponseType指定為

myDataSource1.responseType = YAHOO.widget.DS_XHR.TYPE_XML

 

FlatData方式:

6.5.     DataTable

DataTable的引入

build/datatable/assets/datatable.css

<!--必須的引入 --&gt

build/yahoo-dom-event/yahoo-dom-event.js

<!-- 可選項,用到XHR取數方式時需要 --&gt

build/connection/connection-min.js

build/dragdrop/dragdrop-min.js

<!-- Source files --&gt

build/datasource/datasource-beta-min.js

build/datatable/datatable-beta-min.js

DataTable的使用

 

1.     定義表頭

var myColumnHeaders = [

{key:"name", text:"姓名"},  

{key:"stdno", text:"學號"},  

{key:"age", text:"年齡", type:"number"}  

];

YAHOO.widget.ColumnSet的屬性說明

屬性名稱

含義

key

列的屬性名

text

列的顯示名稱

type

列的型別,包括"string", "number", "date", "currency", "checkbox", "select", "email", "link",預設為”string”

resizeable

Boolean值,是否可透過拖動改變列寬度

sortable

Boolean值,是否可排序

abbr

 

children

定義子表頭,型別為YAHOO.widget.ColumnSet

width

列寬度,單位為px

className

定義本列單元格的樣式名稱

formatter

定義本列單元格的格式化函式

function(elCell, oRecord, oColumn, oData)

parse

 

editor

定義可編輯的列,可用的值為”textbox”,”textarea”

descFunction

遞減排序的函式function(a,b)

ascFunction

遞增排序的函式function(a,b)

 

2.     建立datatable

var myDataTable = new YAHOO.widget.DataTable(

"myContainer",       //datatable繫結的頁面element(DIV)

myColumnSet,      //表頭定義, YAHOO.widget.ColumnSet

myDataSource,     //資料來源

   {caption:"My Caption",summary:"摘要"}   //datatable的配置集

); 

DataTable的配置集

屬性名稱

含義

caption

表格的表頭文字

summary

表格摘要

paginator

Boolean值,是否分頁,預設為false

paginatorOptions

{

containers:

rowsPerPage: 每頁顯示的記錄數,

pageLinks: 最多顯示的頁面連結數,0為全部

currentPage:當前頁

dropdownOptions:下拉框選擇項,null表示不使用下拉框

}

initialRequest

XHR方式下,附加的請求引數

fixedWidth

固定表格寬度

scrollable

表格有捲軸,滾動時表格表頭保持不動,Boolean值

rowSingleSelect

只允許選擇一行,Boolean值

contextMenu

表格的上下文選單,右鍵彈出,YAHOO.widget.ContextMenu

sortedBy

{colKey:排序的列,

  dir: 排序的方向,"desc"和"asc" }

pageCurrent

表格的當前頁

 

3.     DataTable的資料來源

DS_JSArray

以物件陣列的方式使用,可以是在客戶端定義物件陣列,也可以透過DWR的方式呼叫JAVA的方法獲取一個JAVA類的List列表,在回撥函式中以陣列方式使用。

var commonDataSource = new YAHOO.util.DataSource(data);

//data可以為用javascript定義的物件陣列,也可以是DWR方式下回撥函式的引數

commonDataSource.responseType = YAHOO.util.DataSource.TYPE_JSARRAY;

JSON

使用JSON物件時

var myDataSource = new YAHOO.util.DataSource("query.action");

myDataSource.responseType = YAHOO.util.DataSource.TYPE_JSON;

myDataSource.responseSchema = {

resultsList: "result.data",// 結果集所在的JSON結構中的物件

    fields: ["id","username","email","monicker","edit","del"]

};

XML

var myDataSource = new YAHOO.util.DataSource("query.action");

myDataSource.responseType = YAHOO.util.DataSource.TYPE_XML;

myDataSource.responseSchema = {

    resultNode: "Item", // 結果集所在的XML結構中的結點

    fields: ["Company","Title","Name","Phone","Email"] //表格的列

};

Plain Text Data

var myDataSource = new YAHOO.util.DataSource("query.action");

myDataSource.responseType = YAHOO.util.DataSource.TYPE_TEXT;

myDataSource.responseSchema = {

    recordDelim: ""n", // 記錄的分割符

    fieldDelim: ",", // 欄位的分割符

    fields: ["Company","Title","Name","Phone","Email"] //表格的列

};

4.     DataTable資料的訪問

這裡主要指透過javascript訪問DataTable資料時採用的方式。

var rs = YAHOO.Claim.commonDataTable.getRecordSet();

var bj = rs.getRecord(i); //獲取第i行的資料物件

物件obj的屬性就是定義表頭時指定的各列的key值,可以透過obj[key值]訪問該行上的各列屬性值。

5.     測試

6.6.     DragDrop

6.7.     TreeView

6.8.     Container

一組模擬windows控制元件的元件

Container下的控制元件繼承關係

Overlay

Module

ToolTip

Dialog

SimpleDialog

Panel

Container的引入

<!-- Dependencies --&gt

build/yahoo-dom-event/yahoo-dom-event.js

build/connection/connection-min.js

build/animation/animation-min.js

<!-- Source file --&gt

build/container/container-min.js

6.8.1.        Container下的控制元件

由於Container下的控制元件的建立方式和屬性控制方式基本相同,可以在建立元件時透過 config物件指定控制元件的各項屬性,也可以在建立後透過myContainer.cfg.setAttribute來設定控制元件屬性,透過對這些屬性的控 制來實現控制元件的不同動作表現。因此對於各個子控制元件的屬性在下面採用配置集的方式用一個表格來說明。

Module

一種最基礎的控制元件模組,透過Module可以建立一個從HTML中繼承下來的javascript物件,你可以操作頁面中的module,也可以動態建立新的module。module是沒有預定義樣式的,必須手動定義。

使用Module必需的引入

build/yahoo-demo/yahoo-dom-event.js

build/container/container_core-min.js

 

初始化的方式:

constructor:YAHOO.widget.Module(ModuleId,{配置集});

moduleId如果頁面中已經定義了moduleId,則可以直接呼叫render函式將設定的各種屬性直接應用到module上,如果頁面中沒有定義這個id,則必須呼叫render(DOM中已經存在的element)將module插入到DOM中。

顯示/隱藏Module

方式一:

myModule.show();

myModule.hide();

方式二:

myModule.cfg.setProperty("visible", true);

myModule.cfg.setProperty("visible", false);

配置集的說明

屬性名稱

含義

備註

visible

Module是否可見,Boolean值

 

monitorresize

設定是否建立一個不可見的螢幕元素用來監聽DOM中文字大小的改變,Boolean值

 

 

6.8.2.        Overlay

對Module的一種擴充套件,但和Module不同的是Overlay可以透過絕對方式定位,並且是浮動視窗,不會影響頁面中原有的內嵌標籤的佈局。與Module相同的是:也沒有預先定義樣式,必須手動設定。

初始化的方式

與Module相同

位置設定

1.絕對定位:

myOverlay.cfg.setProperty("x", 100);

myOverlay.cfg.setProperty("y", 200);

myOverlay.cfg.setProperty("xy", [100,200]);

2.居中

視窗中居中:myOverlay.center();

螢幕居中:myOverlay.cfg.setProperty("fixedcenter", true);

3.對齊

// myOverlay's右上角對齊myContextEl的左上角

myOverlay.cfg.setProperty("context", ["myContextEl", "tr", "tl"]);

設定過對齊方式後可以直接使用align來改變對齊方式

// myOverlay's 右上角對齊 "myContextEl"'s 左下角.

myOverlay.align("tr", "bl");

注:對齊方式的寫法: top->t ,left ->l, ,bottom->,right->r

top-left 就表示為tl

 

配置集

屬性名稱

含義

x

設定元素的left屬性

y

設定元素的top屬性

xy

設定元素的top,left屬性

context

停靠位置,[element, Overlay的頂角, 被停靠的element頂角]

effect

當Overlay顯示或隱藏時的特效物件.

fixedcenter

視窗大小改變或滾屏時保持居中

width

設定元素的width

height

設定元素的height

zIndex

設定Overlay的遮蓋順序

constraintoviewport

設定為true時保持在視窗邊界以內

iframe

設定為true時在Overlay後將存在一個ifram,防止被Z序高的element覆蓋

 

已知的特效:

YAHOO.widget.ContainerEffect.SLIDE

YAHOO.widget.ContainerEffect.FADE          逐步變淡

OverlayManage

用於管理多個Overlay的元件,能夠模擬類似於多視窗管理系統的互動,使得各個Overlay之間的能夠正確的覆蓋、獲得焦點/失去焦點。

使用這一功能需要的程式碼很簡單,只需要透過register方法登記所有需要納入視窗管理的Overlay就可以了。

//示例:

YAHOO.namespage(“demo”);

YAHOO.demo.manager = new YAHOO.widget.OverlayManager();

YAHOO.demo.manager.register( [Overlay的陣列列表] );

6.8.3.        Tooltip

物件定義:YAHOO.widget.Tooltip

從overlay上擴充套件出來的控制元件,小的浮動視窗,動態生成,提供了預定義的樣式。

 

Tooltip的引入

<!-- CSS --&gt

build/container/assets/container.css

<!-- Dependencies --&gt

build/yahoo-dom-event/yahoo-dom-event.js

build/animation/animation-min.js

<!-- Source file --&gt

build/container/container-min.js

Tooltip初始化方式

constructor:YAHOO.widget.Tooltip(tooltipId , { 配置集 } );

tooltipId可以是頁面中未宣告的控制元件。

 

Tooltip配置集

屬性名稱

含義

text

提示文字

context

滑鼠停靠element ID

container

預設為document.body,指明容器元素

preventoverlap

預設為true,指明是否使用覆蓋方式

showdelay

顯示tooltip的延遲時間,單位毫秒

hidedelay

隱藏tooltip的延遲時間,單位毫秒

autodismissdelay

The number of milliseconds to wait before automatically dismissing a Tooltip after the mouse has been resting on the context element.

同時還繼承了Module,Overlay的所有屬性

 

6.8.4.        Panel

從overlay擴充套件出來的一個元件,類似於作業系統的視窗。他不同於瀏覽器的彈出視窗,是內嵌在頁面檔案中的一種動態Html的element。他在overlay的基礎上擴充套件了一些視窗的功能,如關閉、拖放等。Panel使用了預定義的樣式表

Panel的引入

<!-- CSS --&gt

build/container/assets/container.css

<!-- Dependencies --&gt

build/yahoo-dom-event/yahoo-dom-event.js

build/animation/animation-min.js

build/dragdrop/dragdrop-min.js

<!-- Source file --&gt

build/container/container-min.js

Panel的初始化

constructor:

YAHOO.widget.Panel(panelId); //使用預設配置選項

YAHOO.widget.Panel(panelId,{自定義的配置項}); //使用自定義的配置項

Panel的配置集

屬性名稱

含義

close

是否顯示關閉按鈕,true/false

draggable

是否可以拖動

underlay

陰影顯示方式 shadow,none,matte,預設為shadow,none為無陰影,matte為白色邊界

modal

Panel獲得焦點時,是否允許使用Panel以外的控制元件獲得焦點,類似於MFC的模態/無模態對話方塊

keylisteners

響應按鍵事件的監聽器列表

Panel同時還繼承了Module,Overlay的屬性

6.8.5.        Dialog

從Panel上擴充套件出來的元件,類似於Windows的視窗,在瀏覽器中提供了一種不用頁面 跳轉就能使用互動來獲取使用者輸入的互動方式,使用者輸入的資料都是透過一個標準的HTML Form獲取的,並支援多種的獲取輸入資料的方式:普通的Form的提交,XMLHttpRequest,或者完全透過指令碼來讀取。

Dialog的引入

<!-- CSS --&gt

build/container/assets/container.css

<!-- Dependencies --&gt

build/yahoo-dom-event/yahoo-dom-event.js

build/animation/animation-min.js

build/dragdrop/dragdrop-min.js

<!--可選項: Connection (only required if performing asynchronous submission) --&gt

build/connection/connection-min.js

<!-- Source file --&gt

build/container/container-min.js

Dialog的初始化

constructor:YAHOO.widget.Dialog(dialogId);

dialogId為頁面中已經申明的element

Dialog的配置集

屬性名稱

含義

postmethod

視窗提交的方式,async:非同步,form:標準的submit,none:不提交

buttons

dialog中的button陣列列表,

同時繼承了Overlay,Panel的屬性

單個按鈕物件的定義方式:

 { text:按鈕上的文字,

handler:按鈕的click事件響應函式

isDefault:是否預設按鈕},

 

6.8.6.        SimpleDialog

從Dialog上擴充套件出來的一個元件,主要用於處理使用者選擇Yes/NO,OK/Cancel的互動

SimpleDialog的引入

<!-- CSS --&gt

build/container/assets/container.css

<!-- Dependencies --&gt

build/yahoo-dom-event/yahoo-dom-event.js

build/animation/animation-min.js

build/dragdrop/dragdrop-min.js

build/connection/connection-min.js

<!-- Source file --&gt

build/container/container-min.js

SimpleDialog的初始化

constructor:YAHOO.widget.SimpleDialog(dialogId,{配置集});

dialogId為頁面中已經申明的element

SimpleDialog的配置集

屬性名稱

含義

text

對話方塊中顯示的提示資訊

icon

按鈕圖示:

ICON_BLOCK,   

ICON_WARN,    

ICON_HELP,     

ICON_INFO,     

ICON_ALARM,   

ICON_TIP.       

 

6.9.     Grids

支援不規定寬度的設計

一組用於定義介面版式的樣式表(CSS檔案)

6.10.            TabView

用來建立導航tab欄元件

可以從HTML中的已經存在的標籤來建立,也可以完全透過javascript建立,該元件的最上層元素為

,每一個tab頁面項使用
  • TableView的引入

    <!-- Dependencies --&gt

    <!-- core CSS --&gt

    /build/tabview/assets/tabview.css

    <!-- optional skin for border tabs --&gt

    build/tabview/assets/border_tabs.css

    build/yahoo-dom-event/yahoo-dom-event.js

    build/element/element-beta-min.js

    build/connection/connection-min.js

    <!-- Source file --&gt

    build/tabview/tabview-min.js

    TableView的初始化

    constructor:YAHOO.widget.TabView(tableViewId); 

    建立的方式:

    1.頁面中存在id

       

               

       

           

    Tab One Content

           

    Tab Two Content

           

    Tab Three Content

       

     

    注:

    yui-navset為css檔案中定義的TableView的樣式

    yui-nav為css檔案中定義的Tab頁標籤的樣式   

     

    2.完全使用JavaScript建立TabView

    var myTabs = new YAHOO.widget.TabView("demo");

         

        myTabs.addTab( new YAHOO.widget.Tab({

            label: 'Tab One Label',

            content: '

    Tab One Content

    ',

            active: true

        }));

       

        myTabs.addTab( new YAHOO.widget.Tab({

            label: 'Tab Two Label',

            content: '

    Tab Two Content

    '

        }));

       

        myTabs.appendTo(document.body);

     

    TableView的配置集

    屬性名稱

    含義

    activeIndex

    當前啟用的Tab頁面編號,第一頁為0

    activeTab

    YAHOO.widget.Tab,指向被啟用的Tab頁,

    element

    被繫結的HTML元素

    orientation

    頁面標籤所在的位置,top,bottom,left,right 預設為top

    tabs

    標籤頁(Tab)的陣列列表,只讀

     

    Tab的配置集

     

    屬性名稱

    含義

    active

    當前Tab頁面是否啟用,Boolean值

    cacheData

    Tab頁載入資料的時候是否隱藏,只有dataSrc可用的時候有效

    content

    啟用頁面的文字標籤

    contentEl

     

    dataLoaded

    資料是否載入完成

    dataSrc

    如果設定了這一屬性,當Tab頁被啟用時,頁面資料從這個URL處載入,需要用到Connection Manager

    dataTimeout

    Tab頁載入的超時時間,單位微秒,只有在設定了dataSrc才有效

    disabled

    是否禁止啟用本Tab頁,預設為false

    label

    Tab頁的標籤

    labelEl

    Tab頁的HTML容器元素

    loadMethod

    資料請求的方式,預設為GET,只有在設定了dataSrc才有效

     

    TabView用到的CSS定義

    Class

    描述

    yui-navset

    TabView的

    yui-nav

    TabView的

      yui-content

      TabView的

      的下一級

      disabled

      Tab頁面不可用時的樣式,應用在

      selected

      Tab頁面啟用時的樣式,應用在

      loading

      Tab頁面載入時的樣式,TabView的

      的下一級
      的樣式

       

      7.            常見問題

      7.1.     YUI提供的javascript的檔案引入

      關於引入的版本:

      YUI對於需要引入的js檔案都提供了多個版本:

      1          min是去掉空格後的版本,在正式專案中建議使用min版。

      2          debug是除錯的版本,主要結合YUI的log元件使用。

      3          beta版

      4          不帶字尾的為便於閱讀的版本

       

      yahoo-dom-event.js是包含了yahoo.js,dom.js,event.js的內容,使用了前者後就無需再引入後面三個檔案。

      關於引入的順序:

      1.大部分元件都是依賴於事件驅動,並透過YUI提供的工具集進行DOM操作的,因此yahoo.js,dom.js,event.js或者這三個檔案的合成檔案yahoo-dom-event.js必須早於其他YUI的js檔案引入

      2.Autocomplete如果需要從伺服器取資料時,要用到YUI提供的 datasource.js,因此datasource.js必須在autocomplete.js之前引入;如果是以XHR(JSON,XML等)的方 式取數,還要用到YUI提供的connection,因此connection.js也必須在autocomplete.js之前引入;如果用到了動畫方 式展開下拉框,則需要保證animation.js在autocomplete.js之前引入。

      3.Datatable中列寬度的調整,Container元件中的Overlay以及從 Overlay繼承下來的Dialog,SimpleDialog的視窗拖動,需要用到dragdrop.js,因此dragdrop.js必須在 datatable.js和container.js之前引入;如果要用到Dialog的動畫顯示效果,則需要先引入animation.js。

    • 來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/82392/viewspace-567411/,如需轉載,請註明出處,否則將追究法律責任。

      上一篇: ITIL中英文對照
      YAHOO工具庫提供的方法
      請登入後發表評論 登入
      全部評論

      相關文章