YUI中文文档
YUI中文文档
根据网上别人的说明和综合各方面资料,网上说的要么结构不是很清楚,要么不是很全,呵呵,借别人的轮子总结一下哈,不用造轮子了,我对YUI的文档作一个总结,共同学习。.
打算从零开始学习YUI 。AJAX类库那么多,为什么我要学习YUI呢?首先,因为YUI很强大;其次因为YUI是Yahoo! 的。虽然Yahoo!现在好像没落了,但听同事说了YUI的强大,抑制不住学习的兴奋,今天就来学习一下!学习的东西很多,今天只是走马观花的看一个大概的说明,即每个控件有什么功能,具体怎么用就是后面的事情了。
Yahoo发表了一系列的Ajax设计模式. Yahoo的这些工具包是Yahoo在收购了多个Web2.0网站后推出的Ajax工具包,代码的注释也写的很好,文档也很丰富和详尽。
YUI分为两个大类,一个是Ajax组件,里面包括对底层javascript包装后的几个工具包,分别是connection,event, dom,animation,dnd.还包括一组高级的javascript控件,目前包括AutoComplete,Calendar, Container,Menu,Slider,TreeView.
另一类是几个很有用的几个CSS文件,一个是CSS Page Grids,用它可以很方便的布局你的网页。另外两
个是Standard CSS Fonts和Standard CSS Reset,利用这两个CSS可以对字体等在不同浏览器中获得一致的效果.
一、YUI Utilities(Connection Manager)
Yahoo的javascript文件都有一个注释的很好的,格式化很好的版本和一个去掉注释和空格的版本,学习看源代码当然用前者,而最后在网页上使用的时候就可以选用后者。
Connection的引入:
<!-- Dependency -->
build/yahoo/yahoo-min.js
<!—可选项: 用到事件时引入 -->
build/event/event-min.js
build/connection/connection-min.js
1. Connection Manager
这个工具包用来管理XMLHttpRequest,通过这个工具包可以查询正在执行的请求的状态,可以注册正确返回的回调函数,错误处理的回调函数,还可以根据提供的表单Id方便的收集和发送表单字段。下面给出的代码是基本调用形式
var callback =
{
success: function(res) {/*success handler code*/}, //正常返回处理函数
failure: function(res) {/*failure handler code*/}, //出错返回处理函数
argument: [argument1, argument2, argument3] //可以在success函数和failure函数中访问的变量
}
var transaction = YAHOO.util.Connect.asyncRequest(’GET’, sUrl, callback, null);
说明:
1、第一个参数:指明http请求的方式,可用的方式包括GET、POST、HEAD、PUT、DELETE,但PU
T和DELETE可能在一些A级浏览器上不支持。
第二个参数:请求的URL
第三个参数:回调函数,用于服务器返回数据时调用的客户端处理程序
第四个参数:POST方式时,提供给URL的POST参数信息。
定义回调函数
2、
在异步事物中,可以创建回调函数处理服务器的响应和相关数据,如果你不关心服务器的返回信息,也可以忽略这些回调函数,所有这些回调函数对象都是可选的,然而在大多数情况下,应该至少提供以下三个回调函数:
success:服务器做出有效响应时的回调函数
failure:服务器响应了但提供了错误信息时的回调函数
argument:success和failure为了处理返回信息需要的参数,可以是对象、字符串、数字或者包含了数
据的数组。
3、下面的表给出的是通过正确返回时res参数可以获得的属性值。
属性名                  描述
tId                      该Http请求的事务表示
status                  返回的Http状态码
statusText              对应状态码的字符串表示
getResponseHeader[label] 返回label名称标识的Http头的值
getAllResponseHeader    所有的Http头的字符串表示,用”"n”分隔
responseText            返回内容的字符串表示
responseXML              返回内容的XML表示
argument                回调函数中传入的变量
错误返回时可以通过res返回的属性
属性名          描述
tId              该Http请求的事务表示
status            0
statusText      “communication failure”
argument          回调函数中传入的变量
4、在使用YAHOO.util.Connect.setForm上载文件时,需要定义upload回调函数代替success和failure
5、在回调函数中this将失去作用范围,这种情况下需要通过一个指向父对象的引用的数来访问对象的成员。为了能够使用对象的方法作为回调函数,并维持成员的作用范围,需要定义回调函数对象的成员scope,作为this的值。
6、如果想发送的是表单数据,那么使用下面的代码就可以了:
YAHOO.util.Connect.setForm(formId);
var cObj = YAHOO.util.Connect.asyncRequest(’POST’, ‘www.yahoo’, callback);
查看请求是否已经处理完
var cObj = YAHOO.util.Connect.asyncRequest(’GET’,''www.yahoo’,callback);
var callStatus = YAHOO.util.Connect.isCallInProgress(cObj);
超时取消请求
var cObj = YAHOO.util.Connect.asyncRequest(’GET’, sUrl, callback);
setTimeout(”YAHOO.util.Connect.abort(cObj)”,10000);
二、YUI Utilities(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工具包可以简化浏览器端的事件驱动程序的开发,通过使用简单的接口可以订制响应DOM事件的代码,同时获得浏览器Event对象的各种属性也很方便。通过Event工具包我们还可以订制自己的事件,这样页面组件可以接收这些事件并做出响应。
Event工具集提供的方
YAHOO.util.Event.addListener(element,eventType,fn,obj,override)
参数:
element:为绑定事件的元素id,可以是一个数组,以支持批量操作
eventType:为事件类型
fn:为事件响应的回调函数
obj:当override为true时,为回调函数传入的参数对象;当override为false时,该参数被忽略。
override:
返回值类型:Boolean
功能:给指定的element绑定事件响应函数
YAHOO.veListener:function(element,eventType,fn)
参数:
element:为绑定事件的元素id,
eventType:事件类型
fn:为事件响应函数
返回值类型:Boolean
功能:给指定的element解除绑定事件
YAHOO.util.Event.purgeElement ( el , recurse , sType )
参数:
el:为绑定事件的元素id,
recurse:Boolean值,是否解除子节点的事件绑定
sType:事件类型
返回值类型:Boolean
功能:给指定的element解除绑定的同一类型的事件,也可以解除子节点上绑定的这一类型的事件
addListener的函数别名
YAHOO.Available ( 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.ContentReady ( p_id , p_fn , p_obj , p_override )
参数:
p_id:为绑定事件的元素id,
p_fn:为事件响应函数
p_obj:同addListener的obj参数
p_override:同addListener的override参数
返回值类型:无
功能:与onAvailable类似,但不同的是事件响应函数是等到element可以安全的修改的时候才响应。
YAHOO.DOMReady ( p_fn , p_obj , p_scope )
参数:
p_fn:为事件响应函数
p_obj:同addListener的obj参数
p_scope:同addListener的override参数
返回值类型:无
功能:当DOM第一次可用时执行响应函数。
YAHOO.util.Event.preventDefault ( event)
参数:
event:事件对象
返回值类型:无
功能:阻止事件的缺省行为发生。
YAHOO.Listeners ( el , sType )
参数:
el:HTML element
sType:事件类型,String类型
返回值类型:Object{
type:事件类型
fn:addListener添加的事件响应函数
obj:提供给事件响应函数的参数对象
adjust:否获取缺省的事件
index:UI事件列表中的位置
}
功能:
阻止事件的缺省行为发生。
YAHOO.Time( event)
参数:
event:事件对象
返回值类型:Date对象
功能:获取事件发生时的时间。
YAHOO.Target(ev , resolveTextNode)
参数:
evt:事件对象
resolveTextNode:
返回值类型: HTML element
功能:获取事件发生时的页面标签。对于IE即window.event.srcElement
基本的事件代码
var oElement = ElementById(”elementid”);//获得事件源
function fnCallback(e) { alert(”click”); }//定义回调函数
YAHOO.util.Event.addListener(oElement, “click”, fnCallback);//注册回调函数,当oElement的click事件发生的时候,fnCallback函数将被调用。
//或者更简单的直接传递Id YAHOO.util.Event.addListener(”elementid”, “click”, fnCallback);
注册响应多个页面元素的事件
var ids = [”el1〃, “el2〃, “el3〃];//该数组中可以包括元素ID,元素的引用,或者两者混合的情况。
function fnCallback(e) { alert(this.id); }
YAHOO.util.Event.addListener(ids, “click”, fnCallback);
Yui的Event包解决了一些比较实际的问题,第一页面元素通常在Javacript注册事件代码后载入,这个时候Yui会正确延迟注册,直到指定Id的元素可以访问。第二微软的IE浏览器在事件处理函数中的this指向的是Window对象,而不是发生事件的那个元素,YUI也会正确的传递事件发生的源元素。第三可以把任意的对象传递给事件处理函数。
创建和使用自定义的事件
1.使用CustomerEvent对象创建自己的事件
function TestObj(name) {
this.name = name;
this.event1 = new YAHOO.util.CustomEvent(”event1〃, this);
}
YAHOO.util.CustomEvent = function(type, oScope);
type表示事件类型的字符串
2。注册对自定义事件的响应函数
function Consumer(name, testObj) {
this.name = name;
}
3。响应函数
Event1 = function(type, args, me) {
alert(” this: ” + this +
“"n this.name: ” + this.name +
“"n type: ” + type +
“"n args[0].data: ” + args[0].data +
“"n me.name: ” + me.name);
}
4。触发自定义事件
function TestData(data) {
this.data = data;
}
var t1 = new TestObj(”mytestobj1〃);
var c1 = new Consumer(”mytestconsumer1〃, t1);
var d1 = new TestData(”mydata1〃);
t1.event1.fire(d1);
三、YUI(Dom Collection)
YUI的dom工具包屏蔽了各种浏览器的差别,使用dom工具包可以方便的的操作页面元素,包括控制元素的坐标,以及改变元素的CSS风格。
1、Element的查
YAHOO.(element)
调用ElementById(element),获取指定的页面元素。
YAHOO.ElementsBy(method,tagName,rootNode)
在rootNode
的子节点中按照用户提供的method方法在所有标签为tagName的element中查符合条件的节点。rootNode不指定则在整个Document中查,method是一个method(elementID)类型的函数对象,该函数对象的返回值为Boolean值。
YAHOO.ElementsByClassName(className, tagName, rootNode)
返回指定根节点下所有标签为tagName,class为className的DOM节点数组。根节点为可选参数,不指定时在整个页面中查
YAHOO.util.Dom.inDocument (el)
判断元素el是否在当前的DOM中,支持批量操作。
2、样式控制和访问
YAHOO.util.Dom.hasClass(element, className)
判断element标签上是否指明了className的class,支持批量操作
yui lifeYAHOO.util.Dom.addClass(element, className)
给指定标签增加名为className的class,支持批量操作.
YAHOO.veClass(element, className)
删除element上的名为className的class,支持批量操作
YAHOO.placeClass(element, oldClassName, newClassName)
替换element上的oldClassName样式为newClassName,支持批量操作
YAHOO.Style(element, property)
获取element的style中的property属性,支持批量操作
YAHOO.util.Dom.setStyle(element,property,pValue)
设置element的style的property属性为pValue,支持批量操作
注:本节中的class指的是CSS中定义的class。
3、位置控制和访问
位置控制的相关函数
YAHOO.util.Dom.setX
YAHOO.util.Dom.setY
YAHOO.util.Dom.setXY
YAHOO.X
YAHOO.XY  返回元素坐标 [ left,top ]
YAHOO.Region
获取元素的坐标Region对象{left,top,right,bottom}
可支持批量操作
获取页面可视面积的高度和宽度
YAHOO.ClientWidth
YAHOO.ClientHeight
获取Document的高度和宽度
YAHOO.DocumentWidth
YAHOO.DocumentHeight
获取页面可视区域的高度和宽度(不包含滚动条)
YAHOO.ViewportHeight
YAHOO.ViewportWidth
Region对象:{left,top,right,bottom}
YUI提供的一个对象,用于完成多个矩形区域间的计算(如相交,包含。
YAHOO.ains(region)
判断是否包含了region区域
YAHOO.Area
计算面积
YAHOO.util.Region.intersect(region)
计算与region区域的交迭区域
YAHOO.util.Region.union(region)
计算与region区域求并集(即包含两个区域的最小区域)
Point对象:{x,y}
YUI提供的对象,用于定义坐标点。
例:
获得和设置元素坐标
var pos = YAHOO.XY(’test’);
YAHOO.util.Dom.setXY(’target’, pos);
设置元素的CSS属性
YAHOO.util.Dom.setStyle([’test’, ‘test2′], ‘opacity’, 0.5);
var opacity = YAHOO.Style(’test2′, ‘opacity’);
获得显示当前文档的窗口的大小。
var viewport = [