YAHOO工具庫提供的方法
From : http://zuozheng456.blog.163.com/blog/static/23690056200921044354522/
1.1 YAHOO工具庫提供的方法 2009-03-10 16:43
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引數
返回值型別:無
功能:與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 -->
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 -->
build/fonts/fonts-min.css
build/button/assets/button.css
<!-- Dependencies -->
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 -->
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 | |
container |
按鈕的父id |
使用新建方式時會用到 |
srcelement |
使用替換方式時 |
|
menu |
按鈕對應的選單YAHOO.widget.menu |
|
title |
按鈕title |
沒有指定label時使用title |
href |
按鈕導航URL |
僅在按鈕型別為link時有效 |
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的引入
<!-- 必須引入 -->
build/yahoo-dom-event/yahoo-dom-event.js
<!-- 可選: Connection(用到 XHR資料來源時需要的引入) -->
build/connection/connection-min.js
<!--可選: 用到動畫效果時需要的引入 -->
build/animation/animation-min.js
<!-- Source file -->
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
<!--必須的引入 -->
build/yahoo-dom-event/yahoo-dom-event.js
<!-- 可選項,用到XHR取數方式時需要 -->
build/connection/connection-min.js
build/dragdrop/dragdrop-min.js
<!-- Source files -->
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 -->
build/yahoo-dom-event/yahoo-dom-event.js
build/connection/connection-min.js
build/animation/animation-min.js
<!-- Source file -->
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 -->
build/container/assets/container.css
<!-- Dependencies -->
build/yahoo-dom-event/yahoo-dom-event.js
build/animation/animation-min.js
<!-- Source file -->
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 -->
build/container/assets/container.css
<!-- Dependencies -->
build/yahoo-dom-event/yahoo-dom-event.js
build/animation/animation-min.js
build/dragdrop/dragdrop-min.js
<!-- Source file -->
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 -->
build/container/assets/container.css
<!-- Dependencies -->
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) -->
build/connection/connection-min.js
<!-- Source file -->
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 -->
build/container/assets/container.css
<!-- Dependencies -->
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 -->
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建立,該元件的最上層元素為
TableView的引入
<!-- Dependencies -->
<!-- core CSS -->
/build/tabview/assets/tabview.css
<!-- optional skin for border tabs -->
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 -->
build/tabview/tabview-min.js
TableView的初始化
constructor:YAHOO.widget.TabView(tableViewId);
建立的方式:
1.頁面中存在id
注:
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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Yahoo!Screwdriver:可擴充套件的持續整合工具套件
- Yahoo開源的Apache Kafka管理工具:Kafka ManagerApacheKafka
- Java工具庫——Hutool的常用方法Java
- yahoo的css重置程式碼CSS
- domutils 工具庫的使用方法介紹
- WebAssembly Studio:Mozilla提供的WASM工具WebASM
- Orion - oracle提供的測試io效能的工具Oracle
- gsql是openGauss提供在命令列下執行的資料庫連線工具SQL命令列資料庫
- 【轉】Orion - oracle提供的測試io效能的工具Oracle
- RDBMS提供了多種的診斷工具(轉)
- Yahoo! 日本開發連結
- QTP測試Yahoo郵箱QT
- CatChen:面試體驗 Yahoo 篇面試
- Yahoo財報:2012年Q3 Yahoo營收12.02億美元營收
- 20 個有用的 SVG 工具,提供更好的影像處理SVG
- 微軟提供的UI介面測試輔助工具列表微軟UI
- 雅虎前端優化原則(Yahoo)前端優化
- NLPIR平臺提供快捷簡便的語義分析工具
- 十八款為設計師提供的免費工具
- 資料庫資料安全保障方法就是使用靠譜的工具!資料庫
- 為 Java EE 應用提供的 9 種 Docker 方法JavaDocker
- 將MYSQLDUMP全庫備份分為單庫檔案的方法(自己寫的小工具)MySql
- Polars提供Javascript的資料處理庫 - levelupJavaScript
- 圖資料庫選型:問題、方法與工具資料庫
- 常用的js工具方法JS
- Yahoo財報:2013年Q4 Yahoo營收12.26 億美元 利潤增長28%營收
- JDBC:java提供的專門操縱資料庫的APIJDBCJava資料庫API
- Javascript為String提供分離字元的全域性方法JavaScript字元
- Directory類提供的靜態方法去處理目錄
- 給開發者提供的 35 款 JavaScript 圖形圖表庫JavaScript
- 給開發者提供的35 款JavaScript 圖形圖表庫JavaScript
- 如何移植使用W5500官方提供的最新Socket庫
- python 根據物件和方法名,返回提供這個方法的定義的類Python物件
- 哪些報表工具提供了移動端功能?
- J2SE - Lombok自動生成實體方法的工具類庫的使用Lombok
- 工具庫·
- 從零開始構建自己的js庫工具庫(二)——10個js處理陣列的方法JS陣列
- iOS仿照Yahoo天氣:油條天氣iOS