logo 西林@生存 - 骑猪闯天下!
为什么不自己来搞个JS框架呢?
2007-9-29 16:17:00 By:xling

早就有这个想法,但是一想到jQuery那么强大,就在打退堂鼓,到底要不要写?写了有什么意义?

偶然间,我写了一个架子,于是坚持到现在(汗。。。还没有两天,不会就热这么两天吧!)

这个架子现在就定了如下几个小架子:

1,Ajax  它里面就实现了一个getXMLHttp()方法。

2,Browser,这个架子里全是浏览器的信息。

3,Cookie,这个架子是用来操作cookie的,如何操作请见:http://xling.blueidea.com/archives/2007/5415.shtml 现在还不是写文档的时候,所以,就不详细的说明了。

4,Dom,跟风jQuery的链式操作,但是还不得要领(绝对没有抄袭,因为现在的架子太简单了,信息我自己,就是太复杂,也不会去抄袭)。

5,Error 和 StyleSheet 这两个只是架子而以。

还要陆陆续续的加入Keyboard,Manager,Animation,UI等,如果我能坚持下来,这些东东我都会加上去的!汗,我能坚持下来吗?






<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
<script language="javascript" type="text/javascript">
(function($){
 $.isPercent = function(p){
  return /^(\d*)(\.?)(\d*)%$/.test(p);
 }
 
 var __alert__ = $.alert;
 
 $.alert = function(){
  var arg,s="";
  for(var i=0;arg = arguments[i];i++){
   s += arg + "\n"
  }
  __alert__(s);
 }
})(window);

String.prototype.trim = function(){
 return this.replace(/(^\s*)|(\s*$)/g, "");
}

var JObj = {};
(function($){

 /*----------------------------------------------------------------------------
 Config
 Private
 ----------------------------------------------------------------------------*/

 var Config = {};
 (function($){
  $.Const   = {};
  $.Path   = {};
  $.loadedModule = {};
 })(Config)
 
 $.$getConfigConst = function(){
  return Config.Const;   
 }
 
 $.$getConfigPath = function(){
  return Config.Path;
 }
 
 $.$getConfigLoaded = function(){
  return Config.LoadedModule; 
 }
 
 /*----------------------------------------------------------------------------
 Error
 JObj.Error
 ----------------------------------------------------------------------------*/ 
 
 $.Error = {};
 (function($){
  $.debug = true;
  
  var ErrorList = {};
  
  $.$pushError = function(msg,e){
   
  }
  
 })($.Error)
 
 /*----------------------------------------------------------------------------
 Dom operater
 JObj.Dom Object
 ----------------------------------------------------------------------------*/
 
 var DomObj = function(p){
  var $ = this;
  var object = p;
  
  $.$appendTo = function(f){
   JObj.Dom.$(f).appendChild(object);
   return $;
  }
  
  $.$attr = function(k,v){
   object.setAttribute(k,v);
   object[k] = v;
   return $;
  }
  
  $.$attrs = function(rule){
   var k;
   for(k in rule){
    $.$attr(k,rule[k]);
   }
   return $;
  }
  
  $.$css = function(k,v){
   object.style[k] = v;
   return $;
  }
  
  $.$csss = function(rule){
   var k;
   for(k in rule)
    $.$css(k,rule[k]);
   return $;
  }
 }
 
 $.Dom = {}; 
 (function($,$$){
  $.$ = function(p){
   var o = typeof(p) == "object" ? p : document.getElementById(p);
   var obj = new DomObj(o);
   return obj;
  }
  
  $.$tag = function(p){
   var o = document.getElementsByTagName(p);
   //var obj = new DomObj();
   //return obj;
   return o;
  }
  
  $.$c = function(p,n){
   var o;
   try{
    if(n) o = document.createElemnet("<" + p + " name='" + n + "'>");
    else  o = document.createElement(p);
   }catch(e){
    o = document.createElement(p);
    o.name = name;
   }
   
   var obj = new DomObj(o);
   return obj;
  }
 })($.Dom,$)
 
 /*----------------------------------------------------------------------------------
 Browser check
 JObj.Browser Object
 ----------------------------------------------------------------------------------*/
 
 $.Browser = {};
 (function($){
  
  
  var $fv = function(){
   var f="-1",n=navigator;
   if (n.plugins && n.plugins.length) {
    for (var ii=0;ii<n.plugins.length;ii++) {
     if (n.plugins[ii].name.indexOf('Shockwave Flash')!=-1) {
      f=n.plugins[ii].description.split('Shockwave Flash ')[1];
      break;
     }
    }
   } else if (window.ActiveXObject) {
    for (var ii=10;ii>=2;ii--) {
     try {
      var fl=eval("new ActiveXObject('ShockwaveFlash.ShockwaveFlash."+ii+"');");
      if (fl) { f=ii + '.0'; break; }
     }catch(e) {}
    }
   }
  
   if(f == "-1") return f;
   else return f.substring(0,f.indexOf(".")+2)   
  }  
  
  //Notice : Firefox ,NS can't use property: name (case sensitive)! Because it's a hold field ,and it's values is anonymous.
  var n_ = navigator,s_ = screen;
  
  var b = n_.appName;
  var ua = n_.userAgent.toLowerCase();
  
  $.name = "Unknow";
  $.safari = ua.indexOf("safari")>-1;  // always check for safari & opera
  $.opera = ua.indexOf("opera")>-1;    // before ns or ie
  $.firefox = ua.indexOf('firefox')>-1; // check for gecko engine 
  $.ns = !$.firefox && !$.opera && !$.safari && (b=="Netscape");
  $.ie = !$.opera && (b=="Microsoft Internet Explorer");
  
  $.name = ($.ie ? "IE" : ($.firefox ? "Firefox" : ($.ns ? "Netscape" : ($.opera ? "Opera" : ($.safari ? "Safari" : "Unknow")))));
  
  switch($.name){
   case "Opera":
    $.fullVersion = ua.substr(ua.indexOf("opera") + 6);
    break;
   case "IE":
    $.fullVersion = ua.substr(ua.indexOf("msie") + 5).split(";")[0];
    break;
   case "Firefox":
    $.fullVersion = ua.substr(ua.indexOf("firefox") + 8);
    break;
   case "Safari":
    $.fullVersion = ua.substr(ua.indexOf("version") + 8).split(" ")[0];
    break;
   case "Netscape":
    $.fullVersion = ua.substr(ua.indexOf("netscape") + 9);
    break;
   default:
    $.fullVersion = "-1";
  }
  $.version = parseFloat($.fullVersion);
  
  $.flashVersion = $fv();
  $.cookieEnabled = n_.cookieEnabled;
  $.javaEnabled = n_.javaEnabled();
  
 })($.Browser);
 
 /*----------------------------------------------------------------------------------
 Cookie Operate
 JObj.Cookie Object
 ----------------------------------------------------------------------------------*/
 $.Cookie = {};
 (function($){
  $.$get = function(){
   var cookies = document.cookie;
   if (cookies == "") return;
   cookies = cookies.split(';');
   for(var i=0; i < cookies.length; i++)  // Break each pair into an array
    cookies[i] = cookies[i].split('=');
   for(var i = 0; i < cookies.length; i++) {
    $[(cookies[i][0]).trim()] = decodeURIComponent(cookies[i][1]);
   } 
  }
  $.$get();
  
  $.$save = function(daysToLive, path, domain, secure){
   var dt = (new Date()).getTime() + daysToLive * 24 * 60 * 60 * 1000;
   for(var prop in $) {
    if (typeof $[prop] == 'function')
     continue;
    
    var cookie = "";
    cookie = prop + '=' + encodeURIComponent(this[prop]);
    
    if (daysToLive || daysToLive == 0) cookie += ";expires=" + new Date(dt).toUTCString(); 
    if (path) cookie += ";path=" + path;
    if (domain) cookie += "; domain=" + domain;
    if (secure) cookie += ";secure";
    document.cookie = cookie;
   }
  }
  
  $.$remove = function(path, domain, secure){
   $.save(0, path, domain, secure);
   for(var prop in this) {
    if (typeof this[prop] != 'function')
     delete this[prop];
   }
  } 
 })($.Cookie);
 
 /*------------------------------------------------------------------------------
 StyleSheets Operate;
 ------------------------------------------------------------------------------*/
 $.styleSheets = {};
 
 /*------------------------------------------------------------------------------
 Ajax Operate;
 ------------------------------------------------------------------------------*/
 
 $.Ajax = {};
 (function($,$$){
  $.$getXMLHttp = function(){
   var xmlHttp = null;
   if($$.Browser.ie && $$.Browser.version < 7){
    var v = ['MSXML2.XMLHTTP.8.0', 'MSXML2.XMLHTTP.7.0', 'MSXML2.XMLHTTP.6.0', 'MSXML2.XMLHTTP.5.0', 'MSXML2.XMLHTTP.4.0', 'MSXML2.XMLHTTP.3.0', 'MSXML2.XMLHTTP.2.6', 'MSXML2.XMLHTTP', 'Microsoft.XMLHTTP'];
    if(typeof(Config.Const.ACTIVEXOBJECT_XMLHTTP) == "string")
     v[0] = Config.Const.ACTIVEXOBJECT_XMLHTTP;
     
    for(var i=0;v_ = v[i];i++){
     try{
      xmlHttp = new ActiveXObject(v_);
      Config.Const.ACTIVEXOBJECT_XMLHTTP = v_;
      break;
     }catch(e){}
    }
   }else{
    xmlHttp = new XMLHttpRequest();
   }
   
   if(xmlHttp == null){
    alert("你的系统不支持AJAX");
   }
   return xmlHttp;
  }
  
  $.$send = function(){
   
  }
  
  $.$load = function(){
    
  }
  
  $.$attr = function(p,k){
   return p.attributes.namedItem(k);
  }
 })($.Ajax,$);
 
 var basePath = "";
 
})(JObj);
</script>
</head>

<body>
<div id="aa"></div>
<script language="javascript" type="text/javascript">
JObj.Ajax.$getXMLHttp();

JObj.Dom.$("aa")
 .$csss({height:"100px",width:"100px",backgroundColor:"#cc6600"})
 .$attrs({index:100,name:"div1"})
 .$css("backgroundColor","#ff0000");
</script>
</body>
</html>


 

转我的贴,写你的名,是一种可耻的行为!请不要让我BS你!
阅读全文 | 回复(2) | 引用通告 | 编辑
2007-10-12 1:57:00')" onMouseOver="vControl('CHANGECOLOR',this)" onMouseOut="vControl('RESETCOLOR',this)"> Re:为什么不自己来搞个JS框架呢?
2007-10-12 1:57:00 By:warran
靠。 xling的js 越玩越有深度了!~~
你不是一个人在战斗,我会给你加油的 -_-
转我的贴,写你的名,是一种可耻的行为!请不要让我BS你!
个人主页 | 引用 | 返回 | 删除 | 回复
2007-10-12 1:54:00')" onMouseOver="vControl('CHANGECOLOR',this)" onMouseOut="vControl('RESETCOLOR',this)"> Re:为什么不自己来搞个JS框架呢?
2007-10-12 1:54:00 By:warran
我告诉你一个理由:
整个比jquery强大地!!!而且只写中文文档!!

叫老外都傻眼!!争着学中文。

汉字/汉语的兴盛全靠你了。。。。。。。。
转我的贴,写你的名,是一种可耻的行为!请不要让我BS你!
个人主页 | 引用 | 返回 | 删除 | 回复

发表评论:

    密码:
    主页:
    标题:
    页面数据正在载入...
<<  < 2008 - >  >>
            1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30
Placard
请职:PHP或JS都行,如果学历要求本科的,请直接忽略。谢谢。 有意者请联系:1fairy1#163.com
Logon System
Search
Info about this blog
Others
myDream
JGrid

数据表格
JTree

树状控件
JMenuTab

标签控件(滑动门)
JTrackBar / JScroll

滑动条/模拟滚动条
JAccordion

(QQ菜单)
关于:
xling,也叫xlingFairy 艾克司令 西林.
Email:1fairy1#163.com
喜欢javascript,喜欢java(汗...还在学习中...水平菜的要死...)
bxna 京ICP备05002321号