YUI 研究 -- Connection Manager 模块
来源:互联网 发布:数据分析部门架构 编辑:程序博客网 时间:2024/05/18 02:00
YAHOO.util.Connect XMLHttpRequest的封装,关注跨浏览器和请求状态等问题
自定义事件触发过程:
startEvent
completeEvent
successEvent、failureEvent、uploadEvent
如果调用了abort:
startEvent
abortEvent
failureEvent
YAHOO.util.Connect.asyncRequest(method, uri, callback, postData) 发起异步请求
根据是否需要上传获取相应类型的连接对象;
如果需要上传,则调用uploadFile并返回;
如果只是需调用了setForm而没有上传文件的需要,则把_sFormData、postData和uri根据需要拼接起来;
默认会在XHR连接上加上头信息“X-Requested-With:XMLHttpRequest”,表明这个请求是通过Connection Manager发出的;
默认会在使用post方法的时候加上头信息“Content-Type:application/x-www-form-urlencoded”;
YAHOO.util.Connect.setForm(formId, isUpload, secureUri) 收集表单中的字段信息构造字符串
如果isUpload==true,创建iframe;
如果遇到select元素,则遍历它的options,找到selected==true的option;在IE,用option.attributes['value'].specified,其他用option.hasAttribute('value')判断是否设置了value属性,如果没设置则用text代替value进行字符串组合;
radio和checkbox都是用checked判断;
如果是submit而且是第一个检测到的submit:如果_hasSubmitListener存在,则取_submitElementValue中的值填入字符串,否则,把它的name和value加入字符串。就是说如果在加载的时候_hasSubmitListener===false,表单中第一个被检测到的submit的值会被提交。_hasSubmitListener主要用户解决一个表单中有多个submit的情况。
由于此方法开始时会调用resetFormState,所以它不能保存一个以上的表单信息。
YAHOO.util.Connect.abort(o, callback, isTimeout) 中断一个请求事务
在XHR的事务中,清楚readystate和事务timeout定时器;
在上传文件事务中,清楚iframe和timeout定时器;
如果上面的清楚操作成功,则触发abortEvent,并调用handleTransactionResponse生成返回对象。
YAHOO.util.Connect.initHeader(label, value, isDefault) 添加头信息
如果isDefault为true,则设置全局头信息;否则设置单事务头信息;
如果有相同的label头信息存在,则在它的值前加上新值和逗号。
YAHOO.util.Connect.isCallInProgress(o) 判断请求事务是否还在进行中
在XHR请求的事务中,如果o.conn还没被构析,而且o.conn.readystate!=0而!=4,则返回true;
在上传文件事务中,如果用于上传的iframe还没被删除,则返回true;
其他情况返回false。
YAHOO.util.Connect.createFrame(secureUri) 创建用于上传的iframe
创建的iframe的id为‘yuiIO’+_transaction_id;
在IE中不能设置通过createElement创建的对象的属性;
在IE的SSL环境中不设置iframe的src属性会抛出安全异常;
把iframe设置绝对布局,并把它设为坐标[-1000,-1000];
把加到body所有子元素的末尾。
YAHOO.util.Connect.appendPostData(postData) 在upload的时候把postData转化为hidden字段插入_formNode
YAHOO.util.Connect.uploadFile(o, callback, uri, postData) 上传文件表单
把表单原本的action、method和target保存起来,然后把它们分别设置成uri、post和新创建的iframe的id;
屏蔽了IE的encoding和非IE的entype,并把它们设置成multipart/form-data;
调用appendPostData设置表单的隐藏字段,然后提交表单;
触发startEvent,设置timeout定时器和清除appendPostData创建的隐藏字段;
回复表单原来的值并重置表单状态;
创建callback并注册在新创建的iframe的load事件中;
在callback中,先后触发completeEvent和uploadEvent,并把iframe给除掉;
在上传这样情况中并不能返回对象并不能获得头信息。
YAHOO.util.Connect._hasSubmitListener 是否已经注册的检测submit事件的处理器
模 块加载时执行一匿名方法,此方法判断Event模块是否已加载成功,如果加载成功,则在document上注册一个监听click的事件,如果事件的 target.type="submit",则把_submitElementValue设置为target.name+"="+ target.value,并返回true;否则返回false。
YAHOO.util.Connect.createXhrObject(transactionId) 构造一个XHR对象
在非IE浏览器中,使用XMLHttpRequest;
在IE中,使用ActiveXObject。ActiveXObject构造方法参数的值定义在数组_msxml_progid中,可以通过setProgId(id)把新值置于_msxml_progid前端。
YAHOO.util.Connect.getConnectionObject(isFileUpload) 构造一个有效连接对象
如果isFileUpload==false,调用createXhrObject并返回其结果;
否则,构造一个空对象并设置他的tId为_transaction_id和isUpload为true;
_transaction_id++。
YAHOO.util.Connect.initCustomEvents(o, callback) 创建单事务事件并注册监听器
创建的单事务事件会保存在o中。在一个异步请求事务的整个周期中,会先触发在Connect中的全局事件,再触发单事务事件。
YAHOO.util.Connect.handleReadyState(o, callback) 处理连接状态
创建一个定时器监听o.conn.readyState==4的状态;
当o.conn.readyState==4,触发completeEvent,并调用handleTransactionResponse;
定时器默认值为50,可通过setPollingInterval设置。(为啥不用onreadystatechange呢?)
YAHOO.util.Connect.handleTransactionResponse(o, callback, isAbort) 处理返回结果并判断事务是否成功
如果callback==null,条用releaseObject并返回;
如果200<=o.conn.status<=300或==1223,则执行事务正确处理,触发successEvent;
否则执行错误处理并触发failureEvent。
YAHOO.util.Connect.createResponseObject(o, callbackArg) 创建返回对象
装配连接头信息和其他相关属性。
YAHOO.util.Connect.createExceptionObject(o, callbackArg, isAbort) 创建异常对象
如果是通讯错误,o.status=0;
如果是命令中断,o.status=1。
YAHOO.util.Connect.setProgId(id) 添加ActiveX的签名
YAHOO.util.Connect.setDefaultPostHeader(b) 设置是否使用默认的Post方法头信息
默认的Post方法头信息为'application/x-www-form-urlencoded; charset=UTF-8'。
YAHOO.util.Connect.setDefaultXhrHeader(b) 设置是否使用默认的异步请求头信息
默认的异步请求头信息为'XMLHttpRequest'。
YAHOO.util.Connect.setHeader(o) 把保存起来的头信息设置在o.conn中
YAHOO.util.Connect.releaseObject(o) 构析连接对象
YAHOO.util.Connect.resetFormState() 重置与表单有关的状态
重置_isFormSubmit、_isFileUpload、_formNode和_sFormData。
YAHOO.util.Connect.resetDefaultHeaders() 重置默认头信息
包括_has_default_headers=false和_default_headers={}。
自定义事件触发过程:
startEvent
completeEvent
successEvent、failureEvent、uploadEvent
如果调用了abort:
startEvent
abortEvent
failureEvent
YAHOO.util.Connect.asyncRequest(method, uri, callback, postData) 发起异步请求
根据是否需要上传获取相应类型的连接对象;
如果需要上传,则调用uploadFile并返回;
如果只是需调用了setForm而没有上传文件的需要,则把_sFormData、postData和uri根据需要拼接起来;
默认会在XHR连接上加上头信息“X-Requested-With:XMLHttpRequest”,表明这个请求是通过Connection Manager发出的;
默认会在使用post方法的时候加上头信息“Content-Type:application/x-www-form-urlencoded”;
YAHOO.util.Connect.setForm(formId, isUpload, secureUri) 收集表单中的字段信息构造字符串
如果isUpload==true,创建iframe;
如果遇到select元素,则遍历它的options,找到selected==true的option;在IE,用option.attributes['value'].specified,其他用option.hasAttribute('value')判断是否设置了value属性,如果没设置则用text代替value进行字符串组合;
radio和checkbox都是用checked判断;
如果是submit而且是第一个检测到的submit:如果_hasSubmitListener存在,则取_submitElementValue中的值填入字符串,否则,把它的name和value加入字符串。就是说如果在加载的时候_hasSubmitListener===false,表单中第一个被检测到的submit的值会被提交。_hasSubmitListener主要用户解决一个表单中有多个submit的情况。
由于此方法开始时会调用resetFormState,所以它不能保存一个以上的表单信息。
YAHOO.util.Connect.abort(o, callback, isTimeout) 中断一个请求事务
在XHR的事务中,清楚readystate和事务timeout定时器;
在上传文件事务中,清楚iframe和timeout定时器;
如果上面的清楚操作成功,则触发abortEvent,并调用handleTransactionResponse生成返回对象。
YAHOO.util.Connect.initHeader(label, value, isDefault) 添加头信息
如果isDefault为true,则设置全局头信息;否则设置单事务头信息;
如果有相同的label头信息存在,则在它的值前加上新值和逗号。
YAHOO.util.Connect.isCallInProgress(o) 判断请求事务是否还在进行中
在XHR请求的事务中,如果o.conn还没被构析,而且o.conn.readystate!=0而!=4,则返回true;
在上传文件事务中,如果用于上传的iframe还没被删除,则返回true;
其他情况返回false。
YAHOO.util.Connect.createFrame(secureUri) 创建用于上传的iframe
创建的iframe的id为‘yuiIO’+_transaction_id;
在IE中不能设置通过createElement创建的对象的属性;
在IE的SSL环境中不设置iframe的src属性会抛出安全异常;
把iframe设置绝对布局,并把它设为坐标[-1000,-1000];
把加到body所有子元素的末尾。
YAHOO.util.Connect.appendPostData(postData) 在upload的时候把postData转化为hidden字段插入_formNode
YAHOO.util.Connect.uploadFile(o, callback, uri, postData) 上传文件表单
把表单原本的action、method和target保存起来,然后把它们分别设置成uri、post和新创建的iframe的id;
屏蔽了IE的encoding和非IE的entype,并把它们设置成multipart/form-data;
调用appendPostData设置表单的隐藏字段,然后提交表单;
触发startEvent,设置timeout定时器和清除appendPostData创建的隐藏字段;
回复表单原来的值并重置表单状态;
创建callback并注册在新创建的iframe的load事件中;
在callback中,先后触发completeEvent和uploadEvent,并把iframe给除掉;
在上传这样情况中并不能返回对象并不能获得头信息。
YAHOO.util.Connect._hasSubmitListener 是否已经注册的检测submit事件的处理器
模 块加载时执行一匿名方法,此方法判断Event模块是否已加载成功,如果加载成功,则在document上注册一个监听click的事件,如果事件的 target.type="submit",则把_submitElementValue设置为target.name+"="+ target.value,并返回true;否则返回false。
YAHOO.util.Connect.createXhrObject(transactionId) 构造一个XHR对象
在非IE浏览器中,使用XMLHttpRequest;
在IE中,使用ActiveXObject。ActiveXObject构造方法参数的值定义在数组_msxml_progid中,可以通过setProgId(id)把新值置于_msxml_progid前端。
YAHOO.util.Connect.getConnectionObject(isFileUpload) 构造一个有效连接对象
如果isFileUpload==false,调用createXhrObject并返回其结果;
否则,构造一个空对象并设置他的tId为_transaction_id和isUpload为true;
_transaction_id++。
YAHOO.util.Connect.initCustomEvents(o, callback) 创建单事务事件并注册监听器
创建的单事务事件会保存在o中。在一个异步请求事务的整个周期中,会先触发在Connect中的全局事件,再触发单事务事件。
YAHOO.util.Connect.handleReadyState(o, callback) 处理连接状态
创建一个定时器监听o.conn.readyState==4的状态;
当o.conn.readyState==4,触发completeEvent,并调用handleTransactionResponse;
定时器默认值为50,可通过setPollingInterval设置。(为啥不用onreadystatechange呢?)
YAHOO.util.Connect.handleTransactionResponse(o, callback, isAbort) 处理返回结果并判断事务是否成功
如果callback==null,条用releaseObject并返回;
如果200<=o.conn.status<=300或==1223,则执行事务正确处理,触发successEvent;
否则执行错误处理并触发failureEvent。
YAHOO.util.Connect.createResponseObject(o, callbackArg) 创建返回对象
装配连接头信息和其他相关属性。
YAHOO.util.Connect.createExceptionObject(o, callbackArg, isAbort) 创建异常对象
如果是通讯错误,o.status=0;
如果是命令中断,o.status=1。
YAHOO.util.Connect.setProgId(id) 添加ActiveX的签名
YAHOO.util.Connect.setDefaultPostHeader(b) 设置是否使用默认的Post方法头信息
默认的Post方法头信息为'application/x-www-form-urlencoded; charset=UTF-8'。
YAHOO.util.Connect.setDefaultXhrHeader(b) 设置是否使用默认的异步请求头信息
默认的异步请求头信息为'XMLHttpRequest'。
YAHOO.util.Connect.setHeader(o) 把保存起来的头信息设置在o.conn中
YAHOO.util.Connect.releaseObject(o) 构析连接对象
YAHOO.util.Connect.resetFormState() 重置与表单有关的状态
重置_isFormSubmit、_isFileUpload、_formNode和_sFormData。
YAHOO.util.Connect.resetDefaultHeaders() 重置默认头信息
包括_has_default_headers=false和_default_headers={}。
- YUI 研究 -- Connection Manager 模块
- YUI Research -- Connection Manager module
- YUI 研究 -- YAHOO 模块
- YUI 研究 -- Dom 模块
- YUI 研究 -- Event 模块
- YUI 研究 -- DragDrop 模块
- YUI 研究 -- Animation 模块
- YUI学习笔记(三)------Connection Manager
- openfire研究之部署连接管理器(connection manager)
- openfire研究之部署连接管理器(connection manager)
- Yahoo! User Interface Library,YUI,YUI下载,YUI学习,YUI是什么,YUI浅谈,YUI研究(2)
- Yahoo! User Interface Library,YUI,YUI下载,YUI学习,YUI是什么,YUI浅谈,YUI研究(1)
- Yahoo! User Interface Library,YUI,YUI下载,YUI学习,YUI是什么,YUI浅谈,YUI研究(1)
- putty connection manager
- Oracle Connection Manager Architecture
- Openfire Connection Manager 配置
- Moblin 内核 -- Connection Manager
- Connection Pool Manager
- 点石互动--石头之:如何让你的页面被搜索引擎收录(系列二)
- UML时序图
- 书写基于内核的linux键盘纪录器(上)(ZZ)
- YUI 研究 -- Event 模块
- 如何向所有的资源管理器窗口发送刷新消息
- YUI 研究 -- Connection Manager 模块
- VC++中使用内存映射文件处理大文件 (2)
- YUI 研究 -- DragDrop 模块
- Subversion快速入门教程(收)
- marquee滚动字幕或图片,不理解为什么用js!望赐教
- YUI 研究 -- Animation 模块
- 在ASP.NET中配置应用程序
- window.open()的所有参数列表
- 天道酬勤 幸福不会从天降