写了些js函数的封装,觉得很好用,与大家分享!升级了,顺便散散分O.o!
http://www.hua2r.com/blog/12f06a1e0779dcb0d5cb64aee21dcbfb.html
这里是具体的封装和简短的使用说明O.o
有虾米问题可以发我hejunbin@yahoo.com.cn
[解决办法]
ding
[解决办法]
支持一下
[解决办法]
帮你顶
[解决办法]
jf
[解决办法]
en
[解决办法]
顶
[解决办法]
比较不错~
[解决办法]
顶,回家研究。
[解决办法]
jf
[解决办法]
友情帮楼主顶下,辛苦了:)
[解决办法]
具体有什么用没有看出来,jf
[解决办法]
呵呵, 支持....
俺也写了一个库类, 几乎可以管理所有JS代码...
让你参考参考...
/* <script> */
var Im = new Importer();
Im.Go(fInitImporter);
function fInitImporter(Param)
{
Param.Path = "/SqCsJsLib/ ";
Param.Ext = ".js ";
Param.HFolder = "Help ";
Param.HExt = ".txt ";
Param.HIntervalMs = 50;
}
// shawl.qiu JavaScript Document
/*-----------------------------------------------*\
* shawl.qiu Javascript Importer class v1.0
\*-----------------------------------------------*/
//---------------------------------begin class Importer()-------------------------------//
function Importer()
{// shawl.qiu code
//------------------------------------begin private variable
//---------------begin about
var Au = {};
Au.Subject = "shawl.qiu Javascript Importer class ";
Au.Version = "v1.0 ";
Au.Name = "shawl.qiu ";
Au.Email = "shawl.qiu@gmail.com ";
Au.Blog = "http://blog.csdn.net/btbtd/ ";
Au.CreatedDate = "2007-9-13 v1.0 ";
Au.Update = {};
Au.Update[ "1 "] = " ";
//---------------end about
var This = this;
var Param = {};
Param.Path = "/SqCsJsLib/ ";
Param.Ext = ".js ";
Param.HFolder = "Help ";
Param.HExt = ".txt ";
Param.HIntervalMs = 50;
var PVar = {};
PVar.Interval = null;
PVar.Count = 0;
//------------------------------------end private variable
//------------------------------------begin public method
//-------------------Begin this.Get
this.Get = {};
this.Get.Au = fGetAu;
//-------------------End this.Get
//-------------------Begin this.Set
this.Set = {};
//-------------------End this.Set
this.Go = fGo;
this.Include = fInclude;
this.IncludeDirector = fIncludeDirector;
this.Help = fHelp;
//------------------------------------end public method
//------------------------------------begin private method
function fGo(fIniter)
{ // shawl.qiu code, void return
if(fIsFunc(fIniter)) fIniter(Param);
} // end function fGo
function fIncludeDirector(sCmdList, bIncludeOnce)
{ // shawl.qiu code, void return
var CmdAr = sCmdList.split( "| ");
var CmdArLen = CmdAr.length;
var iCmdArCount = 0;
while(iCmdArCount <CmdArLen)
{
var sFilePath = CmdAr[iCmdArCount];
var sClass = sFilePath.replace(/^.*\//g, " ").replace(/\..*$/g, " ");
var bIncluded = false;
if(bIncludeOnce)
{
bIncluded = fIsFunc(window[sClass]);
//document.write( "bIncluded: ", bIncluded, " <br/> ");
if(bIncluded)
{
iCmdArCount++;
continue;
}
} // end if
var sInclude = [ " <script type= 'text/javascript ' src= ' ",sFilePath, " '> <\/script> "].join( ' ');
document.write(sInclude);
//defaultStatus = sFilePath;
iCmdArCount++;
} // end while
} // end function fIncludeDirector(sCmdList, bIncludeOnce)
function fInclude(sCmdList, bIncludeOnce)
{ // shawl.qiu code, return array
var CmdAr = sCmdList.split( "| ");
var CmdArLen = CmdAr.length;
var iCmdArCount = 0;
var PathAr = [];
while(iCmdArCount <CmdArLen)
{
var sCmd = CmdAr[iCmdArCount];
var sPath = sCmd.replace(/\./g, "/ ");
var sClass = sCmd.replace(/^.*\./g, " ").replace(/[\d\_\-]+$/, " ");
var sFilePath = [Param.Path, sPath, "/ ", sClass, Param.Ext].join( " ");
var sFolderPath = [Param.Path, sPath, "/ "].join( " ");
PathAr.push(sFolderPath);
var bIncluded = false;
if(bIncludeOnce)
{
bIncluded = fIsFunc(window[sClass]);
//document.write( "bIncluded: ", bIncluded, " <br/> ");
if(bIncluded)
{
iCmdArCount++;
continue;
}
} // end if
// document.write( "sCmd: ", sCmd, " <br/> ");
// document.write( "sPath: ", sPath, " <br/> ");
// document.write( "sClass: ", sClass, " <br/> ");
// document.write( "sFilePath: ", sFilePath, " <br/> ");
var sInclude = [ " <script type= 'text/javascript ' src= ' ",sFilePath, " '> <\/script> "].join( ' ');
document.write(sInclude);
iCmdArCount++;
} // end while
return PathAr;
} // end function fInclude(sCmdList, bIncludeOnce)
function fHelp(sCmdList, bHighlight)
{ // shawl.qiu code, void return
var CmdAr = sCmdList.split( "| ");
var CmdArLen = CmdAr.length;
var iCmdArCount = 0;
if(bHighlight)
{
fInclude( "String.HighlightEngine ", true);
PVar.Interval =
setInterval
(
function()
{
defaultStatus = "Loading... "+(PVar.Count++);
if(window[ "HighlightEngine "])
{
while(iCmdArCount <CmdArLen)
{
var sFilePath = fSetHelpPath(CmdAr[iCmdArCount]).join( " ");
fXhExt(sFilePath, fHelpCallback, [bHighlight]);
iCmdArCount++;
clearInterval(PVar.Interval);
} // end while
defaultStatus = "Done. ";
PVar.Count = 0;
}
}
,
Param.HIntervalMs
);
}
else
{
while(iCmdArCount <CmdArLen)
{
var sFilePath = fSetHelpPath(CmdAr[iCmdArCount]).join( " ");
fXhExt(sFilePath, fHelpCallback, [bHighlight]);
iCmdArCount++;
} // end while
} // end if
} // end function fHelp(sCmdList, bHighlight)
function fSetHelpPath(sCmd)
{ // shawl.qiu code, return array
var sPath = sCmd.replace(/\./g, "/ ");
var sClass = sCmd.replace(/^.*\./g, " ").replace(/[\d\_\-]+$/, " ");
if(/^Readme$/i.test(sCmd))
{
return [Param.Path, "Readme ", Param.HExt];
}
else if(/^Call$/i.test(sCmd))
{
return [Param.Path, "Default ", Param.HExt];
}
else if(/^Source$/i.test(sCmd))
{
return [Param.Path, "default ", Param.Ext];
}
else
{
//alert([Param.Path, sPath, "/ ", Param.HFolder, "/ ", sClass, Param.HExt])
return [Param.Path, sPath, "/ ", Param.HFolder, "/ ", sClass, Param.HExt];
}
} // end function fSetHelpPath(sCmd)
function fHelpCallback(TextAr, bHighlight)
{ // shalw.qiu code, void return;
//alert(TextAr)
var Body = document.body;
var SpanEle = $( "Span ");
if(bHighlight)
{
var Hl = new HighlightEngine();
Hl.Go(TextAr, "Tag ");
delete Hl;
TextAr.push( " <hr/> ");
SpanEle.innerHTML = TextAr.join( " ");
}
else
{
SpanEle.innerHTML = [ " <xmp> ", TextAr, " <\/xmp> <hr/> "].join( " ");
}
if(Body.childNodes.length===0)
{
alert(0)
}
else
{
Body.insertBefore(SpanEle, Body.firstChild)
}
} // end function fHelpCallback(TextAr)
function fIsFunc(Func)
{ // shawl.qiu code, return Boolean
if(Func) if(Func.constructor==Function) return true;
return false;
} // end function fIsFunc(Func)
function fXhExt(sUrl, oFunc, ExtArgAr, sMethod)
{//shawl.qiu code, void return
if(!sMethod) sMethod = "GET ";
var xh;
try{ xh = new XMLHttpRequest();}
catch(e)
{
try{ xh = new ActiveXObject( 'microsoft.xmlhttp ');}
catch(e)
{
try{ xh = new ActiveXObject( "Msxml2.XMLHTTP ");} catch(e){} // end try 2
} // end try 1
} // end try
xh.open(sMethod, sUrl);
xh.onreadystatechange =
function()
{
if(xh.readyState == 4 && xh.status == 200)
{
if(oFunc)
{
if(ExtArgAr)
{
if(ExtArgAr.constructor==Array)
{
ExtArgAr.unshift([xh.responseText]);
oFunc.apply(null, ExtArgAr);
}
else oFunc([xh.responseText]);
}
else oFunc([xh.responseText]);
}
else alert(xh.responseText);
}
};
xh.send(null);
} // end function fXhExt(sUrl, oFunc, ExtArgAr, sMethod)
function $(sTag){return document.createElement(sTag);}
function _(sText){return document.createTextNode(sText);}
function fGetAu(){ return Au; }
//------------------------------------end private method
} // shawl.qiu code
//---------------------------------end class Importer()---------------------------------//
/* </script> */
[解决办法]
接个分再说
[解决办法]
支持一下
[解决办法]
接分
[解决办法]
兼容向下和效率可以兼顾...
就是保留某一版本,
再开辟一新版本...
这是版本管理知识...
[解决办法]
接分,帮顶
[解决办法]
楼主好人,接分啊
[解决办法]
up
[解决办法]
楼主好人, 这不就是中国的开源吗!
[解决办法]
谢谢,收藏了,楼主努力!!!
[解决办法]
up
[解决办法]
乐于助人的楼主~~~
向楼主学习!!!
[解决办法]
不错,向好人学习!
[解决办法]
谢谢分享 回去研究
[解决办法]
学习,成长中。。。。。
[解决办法]
接分
[解决办法]
jQuery的封装算是轻量级了,如果和dojo相比的话。
[解决办法]
good
[解决办法]
接分 帮顶~!!
[解决办法]
up!up!!up!!!
[解决办法]
UP
[解决办法]
好多东东,顶
[解决办法]
UP
[解决办法]
好东西……
[解决办法]
jf
[解决办法]
楼主,我建议加些注释,这样我们这些新手更如容易看懂,要不然都不知道函数写的啥意思,嘿嘿。
[解决办法]
顶了再研究
[解决办法]
不错
[解决办法]
恩。。 谢谢分享。。
JF。。
JF。。。
[解决办法]
jf
[解决办法]
/*O.o 1.0.0 by hejunbin@hua2r.com*/
//get方法 获取href后面的属性 参数[val:属性名];
Function.get = function(val) {
var uri = window.location.search;
var re = new RegExp(val + '=([^&]*) ');
return re.test(uri) ? uri.match(re)[1] : null;
};
//prototype的类扩展或重写 有时的确觉得满好用 参数[O:源对象|o:扩展对象]
Function.extend = function(O, o) {
for(var p in o) O[p] = o[p]; return O;
};
//绑定2个语句柄 我到没怎么用这个 参数[fn:绑定的语句柄|O:语句柄中的this对象|arg:参数]
Function.bind = function(fn, O, args) {
return function() {return fn.apply(O, args || arguments)};
};
//遍历执行... 不建议用这个IE下清除内存很麻烦 为什么直接绑定到Array对象上
Function.forEach = function(O, fn, o, args) {
if(O.length == undefined)
for(var i in O)fn.apply( o||O, args || [O[i], i] );
else
for(var i=0; i < O.length; i++)fn.apply( o||O, args || [O[i], i] );
return O;
};
//Ajax对象 参数[O:应该是一个对象,用于补充或扩展当前实例,估计是用来存放一系列事件的语句柄的]
function Ajax(O) {
//不说了
this.transport = (window.ActiveXObject) ? new ActiveXObject( 'Microsoft.XMLHTTP ') : (window.XMLHttpRequest ? new XMLHttpRequest() : false);
//基础属性
this.options = Function.extend({
method: 'get ',
uri: ' ',
async: true,
postBody: null,
onComplete: function() {},
onStateChange: function() {},
update: null,
evalScripts: false
}, O || {});
//发送命令的方法 参数[o:和上面的O是一类东西]
this.request = function(o) {
Function.extend(this.options, o || {});
//打开连接
this.transport.open(this.options.method, this.options.uri, this.options.async);
//绑定事件
this.transport.onreadystatechange = Function.bind(this.onStateChange, this);
//设定post模式的请求头
if(this.options.method == 'post ') {
this.transport.setRequestHeader( 'Content-type ', 'application/x-www-form-urlencoded ');
if (this.transport.overrideMimeType) this.transport.setRequestHeader( 'Connection ', 'close ');
this.options.postBody = Ajax.toQueryString(this.options.postBody);
}
//发送
this.transport.send(this.options.postBody);
};
//异步接收事件
this.onStateChange = function() {
//为什么用settimeout?
//可能是用来绑定某个语句柄
setTimeout(Function.bind(this.options.onStateChange, this), 10);
//检查 数据是否接收完毕并且无错 好像漏了status==0的状态
if (this.transport.readyState == 4 && this.transport.status == 200) {
//下面这个是直接输出反馈内容的 比如返回 '更新成功! '
if (this.options.update) document.getElementById(this.options.update).innerHTML = this.transport.responseText;
//好像是绑定个事件
setTimeout(Function.bind(this.options.onComplete, this, [this.transport.responseText, this.transport.responseXML]), 20);
if (this.options.evalScripts)
setTimeout(Function.bind(this.evalScripts, this), 30);
//清空事件语句柄 为什么不直接用null 而用个new Function
this.transport.onreadystatechange = function() {};
}
};
//这个还有点用
this.evalScripts = function() {
var scripts = null;
if(scripts = this.transport.responseText.match(/ <script[^> ]*?> [\S\s]*? <\/script> /g)) {
Function.forEach(scripts, function(script){
eval(script.replace(/^ <script[^> ]*?> /, ' ').replace(/ <\/script> $/, ' '));
});
}
};
};
//将Object 转换为 search字符串链 参数[o:输入的Object]
Ajax.toQueryString = function(o) {
if(typeof o == 'string ') return o;
else if(typeof o == 'object ') {
var queryString = [];
for(var p in o) queryString.push(encodeURIComponent(p)+ '= '+encodeURIComponent(o[p]));
return queryString.join( '& ');
}
else return false;
};
//获取表单元素值 参数[el:HTML的表单元素]
Ajax.getElementValue = function(el) {
var value = false;
switch(el.tagName.toLowerCase()) {
//奇怪 为什么不用select.value 或者select.options[index].value 可能是非IE FF的浏览器兼容吧
case 'select ': value = el.getElementsByTagName( 'option ')[el.selectedIndex].value; break;
//checked的(多选checkbox|单选radio) 和 (按钮button|隐藏框hidden|文本框text|密码框password) 还应该有image file reset submit
case 'input ':if ( (el.checked && /checkbox|radio/.test(el.type)) || (/button|hidden|text|password/.test(el.type)) )
value = el.value;break;
//textarea
case 'textarea ': value = el.value;
}
return value;
};
//获取表单内的全部表单元素 参数[fm:HTML的表单]
Ajax.getFormObject = function(fm) {
var o = {};
//为什么 用 * 而不分开用 select textarea input 难道顺序不能乱? 用*很浪费
Function.forEach(fm.getElementsByTagName( '* '), function(el) {
var name = el.name;
var value = Ajax.getElementValue(el);
if(value && name) o[name] = value;
});
return o;
};
//以上3个方法放到一起就是将指定的表单内的所有表单元素 转换成 search字符串的形式 还是满有用的
//XMLDOM对象类
function DOMDocument() {
//初始化
this.hasXml = false;
this.xmlDoc = DOMDocument.createXMLDocument();
this.xmlDoc.async = false;
this.xslDoc = DOMDocument.createXSLDocument();
this.xslDoc.async = false;
//加载一个xml文件 参数[aXml:路径]
this.load = function(aXml) {
this.xmlDoc.load(aXml);
this.hasXml = true;
};
//.....这个不说了 我也很少用
this.loadXSL = function(aXsl) {
this.xslDoc.load(aXsl);
if(window.ActiveXObject) {
var oTemplate = new ActiveXObject( 'MSXML2.XSLTemplate ');
oTemplate.stylesheet = this.xslDoc;
this.xsltProcessor = oTemplate.createProcessor();
} else {
this.xsltProcessor = new XSLTProcessor();
this.xsltProcessor.importStylesheet(this.xslDoc);
}
};
//直接加载XML文档
this.loadXML = function(aStr) {
if(window.ActiveXObject) this.xmlDoc.loadXML(aStr);
else {
var parser = new DOMParser();
this.xmlDoc = parser.parseFromString(aStr, 'text/xml ');
}
this.hasXml = true;
};
//Xpath分析器 ....这个有点兼容性问题
this.evaluateXPath = function(aExpr, aNode) {
aNode = aNode||this.xmlDoc;
if(window.ActiveXObject)
return aNode.selectNodes(aExpr);
else {
var xpe = new XPathEvaluator();
var nsResolver = xpe.createNSResolver(aNode.ownerDocument == null ?
aNode.documentElement : aNode.ownerDocument.documentElement);
var result = xpe.evaluate(aExpr, aNode, nsResolver, 0, null);
var found = [];
var res;
while (res = result.iterateNext())
found.push(res);//push效率没有arr[arr.length]=xxx的效率高
return found;
}
};
//pass
this.transform = function(aParams) {
if(window.ActiveXObject) {
for(var p in aParams) this.xsltProcessor.addParameter(p, aParams[p]);
this.xsltProcessor.input = this.xmlDoc;
this.xsltProcessor.transform();
return this.xsltProcessor.output;
} else {
for(var p in aParams) this.xsltProcessor.setParameter(null, p, aParams[p]);
var oResultDom = this.xsltProcessor.transformToDocument(this.xmlDoc);
return new XMLSerializer().serializeToString(oResultDom);
}
};
};
//创建xmldoc对象
DOMDocument.createXMLDocument = function() {
if (window.ActiveXObject) return new ActiveXObject( 'MSXML2.DOMDocument ');
else return document.implementation.createDocument( ' ', ' ',null);
};
//创建xsl对象
DOMDocument.createXSLDocument = function() {
if (window.ActiveXObject) return new ActiveXObject( 'Microsoft.FreeThreadedXMLDOM ');
else return document.implementation.createDocument( ' ', ' ',null);
};
[解决办法]
看过 btbtd(影子...) 的FW js的管理那块还不错但还没有Meizz老大的FW好.而且xmlHttpRequest那块有点太简单了.还没LZ的好.
FW我也有写 不过满复杂的 而且有一定的规范性 就放出xmlhttprequest这块给你们参考一下吧!
//----------------------------- xmlHttpRequest部分
//xmlhttp对象
function xmlHttp()
{
this.classType = "xmlHttp ";//类型 (规范) 用于指定为强制类型时使用
this.bubbles = false;//事件冒泡 (规范)
Class.initialize.apply(this,arguments); //初始化 (规范)
}
xmlHttp.prototype = {
//初始化 (规范)
initialize:function(){
this.postType = "POST ";
this.url = " ";
this.async = false;
this.responseType = 0;//反馈类型 0:xml 1:text 2:stream
//创建xmlHttpRequest
if(this.xhttp=this.createXHttp())
this.initEvent();
},
//中断方法
about:function(){this.xhttp.about();},
//加载事件
initEvent:function()
{
var self = this;
//状态变更事件语句柄
this.xhttp.onreadystatechange = function()
{
switch(self.xhttp.readyState)
{
//完成
case 4:
if(self.xhttp.status==200 || self.xhttp.status==0)
self.fireEvent( "onready ");
else
self.fireEvent( "onerror ",self.xhttp.status);
break;
//打开
case 1:self.fireEvent( "onopen ");break;
//发送
case 2:self.fireEvent( "onsended ");break;
//加载中
case 3:self.fireEvent( "onloading ");break;
}
}
},
//接收反馈信息 参数[type:返回类型 0:xml/1:string/2:stream(IE) ]
response:function(type)
{
if(type==null)type=this.responseType;
switch(type)
{
case "stream ":
case 2:
if(Browser.IE)return this.xhttp.responseStream;
default:
case "xml ":
case 0:
return this.xhttp.responseXML;
case "text ":
case 1:
return this.xhttp.responseText;
}
},
//发送信息包 参数[command:信息包]
sendCommand:function(command)
{
if(this.xhttp!=null && command!=null)
{
//打开xmlHttpRequest对象
this.xhttp.open(this.postType,this.url,this.async==true);
//创建post请求头 后者的编码要根据实际情况定
if(this.postType.toLowerCase()== "post ")
this.xhttp.setRequestHeader( "Content-Type ", "application/x-www-form-urlencoded ");
else
this.xhttp.setRequestHeader( "Content-Type ", "text/xml; charset=utf-8 ");
//发送信息包
this.xhttp.send(command);
//如果是非异步模式 直接返回回馈信息 不用额外添加事件语句柄
if(this.async==false && (this.xhttp.status==200 || this.xhttp.status==0))
return this.response();
}
return " ";
},
//创建无法创建XmlHttpRequest方法
createXHttp:function()
{
var o = null;
if(Browser.IE){
var arr = [ "MSXML3.XMLHTTP ", "MSXML2.XMLHTTP ", "Microsoft.XMLHTTP "];
for(var i=0,l=arr.length;i <l;i++)
try{o=new ActiveXObject(arr[i]);break;}catch(e){}
}
else if(Browser.FF)
try{o=new XMLHttpRequest();}catch(e){}
if(o==null)
alert( "无法创建XmlHttpRequest ");
return o;
}
}
//------------------------------------ 事件部分
//类的规范方法
var Class = {
//规范的初始化方法
initialize:function()
{
this.fireEvent = Class.fireEvent;
this.attachEvent = this.addEventListener = Class.attachEvent;
this.detachEvent = this.removeEventListener = Class.detachEvent;
this.initialize.apply(this,arguments);
},
//触发事件的方法 参数[e:事件名;p:参数(允许向事件语句柄传递参数)]
//为了兼容IE和FF原有的事件 这里的事件名 需要带 'on '
fireEvent:function(e,p)
{
if(typeof(e)== "string ")
{
//判断对象是否存在语句柄 有则执行
if(typeof(this[e])== "function ")this[e](p);
//判断对象是否有绑定语句柄队列 如果有 遍历执行
if(this.Events && this.Events[e] && this.Events[e] instanceof Array)
for(var i=0,l=this.Events[e].length;i <l;i++)
if(typeof(this.Events[e][i])== "function ")
this.Events[e][i](p);
//判断对象是否可以冒泡 && 判断父对象是否支持fireEvent方法 有则触发父对象事件
if(this.bubbles!=false && this.parent && typeof(this.parent.fireEvent)== "function ")
this.parent.fireEvent(e,p);
}
},
//兼容IE和FF的 向事件语句柄队列中添加一个语句柄 参数[_eventKey:事件名;_handler:语句柄]
attachEvent:function(_eventKey,_handler)
{
if(typeof(_eventKey)== "string " && typeof(_handler)== "function ")
{
if(Browser.FF)_eventKey = "on " + _eventKey;
if(this.Events==null)this.Events={};
if(this.Events[_eventKey]==null)this.Events[_eventKey]=[];
this.Events[_eventKey][this.Events[_eventKey].length]=_handler;
}
},
//兼容IE和FF的 移除一个事件语句柄 参数[_eventKey:事件名;_handler:语句柄]
detachEvent:function(_eventKey,_handler)
{
if(typeof(_eventKey)== "string " && typeof(_handler)== "function ")
{
if(Browser.FF)_eventKey = "on " + _eventKey;
if(this.Events && this.Events[_eventKey])
{
if(this.Events[_eventKey] instanceof Array)
{
this.Events[_eventKey].Remove(_handler);
if(this.Events[_eventKey].length==0)delete this.Events[_eventKey];
}
else
delete this.Events[_eventKey];
}
}
}
}
//----------------------------------辅助方法
//浏览器类型
var Browser = {
MO:(typeof(document.implementation)!= "undefined "&&typeof(document.implementation.createDocument)!= "undefined "&&typeof(HTMLDocument)!= "undefined ")
,IE:window.ActiveXObject?true:false
,FF:(navigator.userAgent.toLowerCase().indexOf( "firefox ")> -1)
,OP:(navigator.userAgent.toLowerCase().indexOf( "opera ")> -1)
}
//添加和移除事件语句柄方法 兼容IE/FF 参数[o:事件对象;_eventKey:对象名;_handler:语句柄]
function $AE(o,_eventKey,_handler)
{
if(Browser.IE)
{o.attachEvent( "on " + _eventKey,_handler);}
else if(Browser.FF)
{o.addEventListener(_eventKey,_handler,false);}
}
function $DE(o,_eventKey,_handler)
{
if(Browser.IE)
o.detachEvent( "on " + _eventKey,_handler);
else if(Browser.FF)
o.removeEventListener(_eventKey,_handler,false);
}
[解决办法]
好东西啊,多谢LZ
[解决办法]
UP
[解决办法]
学习
[解决办法]
支持
[解决办法]
JF
[解决办法]
JF 谢谢
[解决办法]
JF..
[解决办法]
挖 好贴 支持!
[解决办法]
还没看 先顶一下 看去了
[解决办法]
接分
[解决办法]
那个啥...把结构秀一下...
基本上结构决定一切...
[解决办法]
秀一下俺的...
Folder PATH listing for volume Backup
Volume serial number is 0006EEEC 209C:FFAE
G:.
├─Array
│ └─ExtendArray
│ └─Help
├─Data
│ ├─Enum
│ │ └─Help
│ └─HashTable
│ └─Help
├─Date
│ └─ExtendDate
│ └─Help
├─Demo
├─Dom
│ ├─Doms
│ │ └─Help
│ ├─DomTree
│ │ └─Help
│ ├─Keywords
│ │ └─Help
│ └─Keywords1-2
│ └─Help
├─Editor
│ ├─sqEditor3
│ │ ├─BgColorScheme
│ │ ├─Demo(AspJscript)
│ │ │ └─data
│ │ ├─Demo(Html)
│ │ ├─Demo(Lib_AspJscript)
│ │ │ └─data
│ │ ├─Demo(Lib_Html)
│ │ ├─emotion
│ │ ├─Highlights
│ │ │ └─Contents
│ │ ├─html
│ │ ├─icon
│ │ ├─images
│ │ ├─style
│ │ └─Styler
│ │ └─Plus
│ └─sqUbbEditor4-0
│ ├─BgColorScheme
│ ├─demo
│ │ ├─#data
│ │ ├─ac
│ │ ├─cs
│ │ ├─delete
│ │ ├─display
│ │ ├─edit
│ │ ├─files
│ │ ├─html_template
│ │ │ └─_notes
│ │ ├─include
│ │ ├─js
│ │ ├─post
│ │ └─style
│ ├─demo(Lib)
│ │ ├─#data
│ │ ├─ac
│ │ ├─cs
│ │ ├─delete
│ │ ├─display
│ │ ├─edit
│ │ ├─files
│ │ ├─html_template
│ │ │ └─_notes
│ │ ├─include
│ │ ├─js
│ │ ├─post
│ │ └─style
│ ├─emotion
│ ├─html
│ ├─icon
│ ├─images
│ │ └─nav
│ ├─style
│ └─Styler
│ └─Plus
├─Event
│ └─Events
│ └─Help
├─Files
├─Form
│ ├─CheckOrderSubmit
│ │ └─Help
│ ├─Forms
│ │ └─Help
│ ├─select
│ │ └─Help
│ ├─Select1-2
│ ├─Select1-3
│ ├─Select1-3_1
│ │ └─Help
│ ├─validate
│ │ └─Help
│ ├─Validator
│ │ └─Help
│ ├─Validator1-2
│ │ └─Help
│ ├─Validator2
│ └─Validator2-1
├─Image
│ └─images
│ └─Help
├─Media
│ └─sqMusicPlayer2-0
│ ├─Html
│ ├─mp3
│ ├─playlist
│ └─sqCrossDomain
├─Object
│ └─ExtendObject
│ └─Help
├─Prj1
│ └─projects
│ └─Help
├─String
│ ├─ExtendString
│ │ └─Help
│ ├─highlight
│ │ └─Help
│ ├─HighlightEngine
│ │ └─Help
│ └─Random
│ └─Help
├─Templates
├─Tools
│ ├─BgColorScheme
│ │ └─Help
│ ├─BgColorScheme1-1
│ │ └─Help
│ ├─Highlights1-9
│ │ └─Contents
│ └─Styler1-2
│ └─Plus
├─Ui
│ ├─Blink
│ │ └─Help
│ ├─Couplet
│ │ └─Help
│ ├─Dragging
│ │ └─Help
│ ├─Faded
│ │ └─Help
│ ├─Faded1-1
│ │ └─Help
│ ├─FixBox
│ │ └─Help
│ ├─Menu
│ │ └─Help
│ ├─Menu1-0_1
│ │ └─Help
│ ├─Moving
│ │ └─Help
│ ├─Rounded
│ │ └─Help
│ ├─Rounded2-0
│ └─Ui
│ └─Help
└─Utility
├─Is
│ └─Help
├─sqCrossDomain
├─sqCrossDomain1-1
└─utilities
└─Help
[解决办法]
ajax吗,好象看不懂啊
[解决办法]
jf,up
[解决办法]
我没有写资源管理的部分 还有些东西没有规范成类就没写上去
这些是目前的类和命名空间
<?xml version= "1.0 " encoding= "UTF-8 "?>
<xml>
<TE>
<UI>
<treeview>
<tree/>
<treenode/>
</treeview>
<gridview>
<grid/>
<tablehead/>
<tablebody/>
<tablefoot/>
<tablrow/>
<tablecell/>
</gridview>
<calendar/>
<SMSUI/>
<tabControl/>
<tabPage/>
<sidebar/>
<subwindow/>
<Ifield/>
<drag/>
<focusStyle>
<type1/>
<type2/>
</focusStyle>
</UI>
<Control>
<gridDesignControl>
<dataManager>
<dataInput/>
<schema/>
<parameter/>
<dictionary/>
</dataManager>
<gridManager>
<property/>
<struct/>
<column/>
</gridManager>
</gridDesignControl>
<gridViewerControl/>
</Control>
<data>
<dataSet/>
<dataRow/>
<dataCell/>
<dataSchema/>
<dataColumn/>
<directionarys/>
<directionary/>
</data>
</TE>
<System/>
<Class/>
<MethodExtand/>
<dataExtand/>
<Browser>
<Event/>
</Browser>
<timespan/>
<xmlHttp/>
<xmlDoc/>
</xml>
以下给出几个部分的扩展的方法
<?xml version= "1.0 " encoding= "UTF-8 "?>
<xml>
<extand>
<global>
$:document.getElementById
$$:document.getElementsByName
$C:document.createElement
$X:xmlnode.xml
$XT:xmlnode.text
$XV:xmlnode.value
$AE:绑定事件
$AD:取消绑定
</global>
<Array>
<prototype>
Each:遍历 function(o,i){} o是当前元素 i是当前元素的序列
indexOf:获取序列
Remove:移除首个
Replace:替换首个
ReplaceAll:全部替换
copyFrom:从其他类似array的数组复制 例如getElementsByName的返回值
Clear:清除数组
</prototype>
</Array>
<String>
<prototype>
trim:除空格
toInt:转换成int "123px ".toInt()=123 ; "-123jasdf321aks ".toInt()=123
</prototype>
</String>
<Date>
<method>
getFormatDate:获取 基于format格式将字符串转换成的日期
</method>
<prototype>
setFormatDate:设置日期为 基于format格式将字符串转换成的日期 例如:format= "yyyy年MM月dd日 HH时mm分ss秒 " string= "2007年9月19日 9时10分20秒 "
Format:返回 基于format格式 将日期转换成字符串(作者:meizz)
monthDays:返回以本月为主体的(包括上月最后几天和下月最初几天)共42天的日期(用于填充日历)
addYear:加n年
addMonth:加n月
addDay:加n日
addHour:加n小时
addMinute:加n分钟
addSecond:加n妙
addMS:加n毫秒
addWeek:加n星期
</prototype>
</Date>
</extand>
</xml>
[解决办法]
My God....
咱们的东西说不到一块去...
俺那是库类, 不是框架...
所谓的框架就是写一些兼容的方法然后把自己搞得不兼容...
俺是不会干这种事的..
还有你那种结构导入导出算法非整麻烦不可...
[解决办法]
ding
[解决办法]
顶
看看
------解决方案--------------------
其实类库框架两者都有 公司就我一个人搞JS没办法 为了大家只能做成应用控件,但所有控件都是在类库的基础上完成的
[解决办法]
接分帮顶
[解决办法]
都是牛人 学习 接分
[解决办法]
顶
[解决办法]
up
[解决办法]
顶!
[解决办法]
好多牛人啊,但樓主不但是牛人還是個熱心腸,
[解决办法]
这些代码做什么用的?写个说明把
[解决办法]
支持~~~~`
[解决办法]
来得晚了?
接接
[解决办法]
up
[解决办法]
支持
[解决办法]
jf
[解决办法]
JF
[解决办法]
恭喜呀接分
-------------------------------
拜师学艺网 www.sohoiii.com
-------------------------------
[解决办法]
恭喜了,王先生也在。你的瘦猴网站我也去过了
[解决办法]
这么好的东西!!!太好了,感激不尽楼主!!
[解决办法]
继续``
[解决办法]
看过了,
[解决办法]
收藏了
[解决办法]
学习路过