📄 myjsframe.js
字号:
/*
* My JavaScript Framework
* Version : 0.1.0.2
* Author : misshjn
* Email : misshjn@163.com
* Home : http://www.happyshow.org/
*/
function $(){
var elem = null;
if(typeof arguments[0] !="string"){
if(!arguments[0]){return null;}
elem = arguments[0];
if(!elem["version"]){
$._Method.Element.apply(elem);
if($._appendMethod){
$._appendMethod.apply(elem);
}
}
return elem;
}
var argID = arguments[0].trim();
if(argID.indexOf(" ")==-1 && argID.indexOf(",")==-1 && argID.indexOf(".")==-1){
elem = document.getElementById(argID.replace("#",""));
if(!elem){return null;}
if(!elem["version"]){
$._Method.Element.apply(elem);
if($._appendMethod){
$._appendMethod.apply(elem);
}
}
return elem;
}
//CSS Selector
var path = argID.replace(/(^,*)|(,*$)/g,"").split(",");
var allelem = [];
for(var a=0,b; b=path[a]; a++){
var p = b=path[a].trim().replace(/ +/g," ").split(" ");
for (var i=0,q; q=p[i]; i++){
if (q.indexOf("#")==0){ //id
elem = $(q.substring(1));
continue;
}
var attsel = [];
var elem_temp=[];
if (q.indexOf(".")!=-1){ // (tag+)className
var tags = q.replace(/\[.*?\]/gi,function($1){attsel.push($1.replace(/\[|\]/g,""));return "";});
var tag = tags.split(".")[0];
var cn = tags.split(".")[1];
if (elem == null){
elem_temp = $._find(tag,cn,document);
}else{
if (elem instanceof Array){
var arr = [];
elem.each(function(obj){$._find(tag,cn,obj).each(function(){arr.push(arguments[0])});});
elem_temp = arr;
}else{
elem_temp = $._find(tag,cn,elem);
}
}
elem = $._attributeSelector(attsel,elem_temp);
continue;
}else{//tag
var tag = q.replace(/\[.*?\]/gi,function($1){attsel.push($1.replace(/\[|\]/g,""));return "";});
if(elem == null){
elem_temp = $A(document.getElementsByTagName(tag)).each(function(obj){$(obj)});
}else{
if (elem instanceof Array){
var arr = [];
elem.each(function(obj){$A(obj.getElementsByTagName(tag)).each(function(obj){arr.push($(obj))})});
elem_temp = arr;
}else{
elem_temp = $A(elem.getElementsByTagName(tag)).each(function(obj){$(obj)});
}
}
elem = $._attributeSelector(attsel,elem_temp);
}
}
elem.each(function(obj){allelem.push(obj)});
elem = null;
}
return allelem;
};
$.Version = "0.1.0.2";
$._find = function(tag,cn,par){
var arr = par.getElementsByTagName(tag||"*");
var elem = [];
for(var i=0,j; j=$(arr[i]); i++){
if(j.className.hasSubString(cn," ")){elem.push(j);}
}
return elem;
}
$._attributeSelector = function(attsel,elem_temp){
for (var j=0; j<attsel.length; j++){
var elemArr = [];
var k=attsel[j].split(/=|!=/g);
if(k.length==1){
elem_temp.each(function(n){
if(n.getAttribute(k[0].trim())){
elemArr.push(n);
}
});
}else if(k.length>1){
elem_temp.each(function(n){
if(attsel[j].indexOf("!=")!=-1){
if(n.getAttribute(k[0].trim())!=k[1].trim()){
elemArr.push(n);
}
}else{
if(n.getAttribute(k[0].trim())==k[1].trim()){
elemArr.push(n);
}
}
});
}
elem_temp.length = 0;
elem_temp = elemArr;
}
return elem_temp;
}
function NameSpace(){};
function StringBuffer(){this.data = []};
$._Method = {
Element : function(){
this.version = $.Version;
this.hide = function(){this.style.display="none"; return this};
this.show = function(){this.style.display=""; return this};
this.getStyle = function(s){
var value = this.style[s=="float"?($.Browse.isIE()?"styleFloat":"cssFloat"):s.camelize()];
if (!value){
if (this.currentStyle){
value = this.currentStyle[s.camelize()];
}else if (document.defaultView && document.defaultView.getComputedStyle){
var css = document.defaultView.getComputedStyle(this, null);
value = css ? css.getPropertyValue(s) : null;
}
}
return value;
};
this.setStyle = function(s){
var sList = s.split(";");
for (var i=0,j; j=sList[i]; i++){
var k = j.split(/:(?!\/\/)/g);
var key = k[0].trim();
key=key=="float"?($.Browse.isIE()?"styleFloat":"cssFloat"):key.camelize();
this.style[key] = k[1].trim();
}
return this;
};
this.toggle = function(){this.getStyle("display")=="none"?this.show():this.hide(); return this};
this.hasClassName = function(c){return this.className.hasSubString(c," ");};
this.addClassName = function(c){if(!this.hasClassName(c)){this.className+=" "+c};return this};
this.removeClassName = function(c){if(this.hasClassName(c)){this.className = (" "+this.className+" ").replace(" "+c+" "," ").trim(); return this}};
this.toggleClassName = function(c){if(this.hasClassName(c)){this.removeClassName(c);}else{this.addClassName(c);};return this;}
this.getElementsByClassName = function(c){return this.getElementsByAttribute("className",c)};
this.getElementsByAttribute = function(n,v){ //name,value;
var elems = this.getElementsByTagName("*");
var elemList = [];
for (var i=0,j; j=elems[i]; i++){
var att = j[n] || j.getAttribute(n);
if (att==v){
elemList.push(j);
}
}
return elemList;
};
this.subTag = function(){return $A(this.getElementsByTagName(arguments[0])).each(function(n){$(n);});}
this.parentIndex = function(p){
if (this==p){return 0}
for (var i=0,n=this; n=n.parentNode; i++){
if(n==p){return i;}
if(n==document.documentElement) return -1;
}
}
this.remove = function(){
return this.parentNode.removeChild(this);
}
this.nextElement = function(){
var n = this;
for (var i=0,n; n = n.nextSibling; i++){
if(n.nodeType==1) return $(n);
}
return null;
};
this.previousElement = function(){
var n = this;
for (var i=0,n; n = n.previousSibling; i++){
if(n.nodeType==1) return $(n);
}
return null;
};
},
Array : function(){
this.indexOf = function(){
for (i=0; i<this.length; i++){
if (this[i]==arguments[0])
return i;
}
return -1;
};
this.each = function(fn){
for (var i=0,len=this.length; i<len; i++){
fn(this[i],i);
}
return this;
};
this.uniqStr = function(){
var tempArr=[],tempArr1=[],j=0;
for(var i=this.length;i>0;i--){
if(!tempArr[this[i-1]]){
tempArr[this[i-1]]=1;
}else{
if(tempArr[this[i-1]]++==1)
tempArr1[j++]=this[i-1];
this.splice(i-1,1);
}
}
return tempArr1;
};
},
String : function(){
this.trim = function(){
var _re,_argument = arguments[0] || " ";
typeof(_argument)=="string"?(_argument == " "?_re = /(^\s*)|(\s*$)/g : _re = new RegExp("(^"+_argument+"*)|("+_argument+"*$)","g")) : _re = _argument;
return this.replace(_re,"");
};
this.stripTags = function(){
return this.replace(/<\/?[^>]+>/gi, '');
};
this.cint = function(){
return this.replace(/\D/g,"")+0;
};
this.camelize = function(){
return this.replace(/(-\S)/g,function($1){return $1.toUpperCase().substring(1,2)})
};
this.hasSubString = function(s,f){
if(!f) f="";
return (f+this+f).indexOf(f+s+f)==-1?false:true;
};
this.hasSubStrInArr = function(){
for(var i=0; i<arguments[0].length; i++){
if(this.hasSubString(arguments[0][i])){return true;}
}
return false;
};
this.toXMLString = function(){
var arr = this.split("&");
var str = new StringBuffer();
for (var i=0,len=arr.length; i<len; i++){
var item = arr[i].split("=");
str.append("<"+item[0]+"><![CDATA["+item[1]+"]]></"+item[0]+">");
}
var rootStr = arguments[0]?arguments[0]:"root";
return "<"+rootStr+">"+str.toString()+"</"+rootStr+">";
};
this.URLEncode = function(){ return $E(this)};
this.URLDecode = function(){ return $D(this)};
},
StringBuffer : function(){
this.append = function(){this.data.push(arguments[0]);return this};
this.toString = function(){return this.data.join(arguments[0]||"")};
this.length = function(){return this.data.length};
this.clear = function(){this.data.length=0; return this;}
},
NameSpace : function(){
this.copyChild = this.appendChild = function(ns){
for (var key in ns){
this[key] = ns[key];
}
return this;
};
}
};
$._Method.Array.apply(Array.prototype);
$._Method.String.apply(String.prototype);
$._Method.StringBuffer.apply(StringBuffer.prototype);
$._Method.NameSpace.apply(NameSpace.prototype);
$.Browse = {
isIE : function(){return navigator.userAgent.hasSubString("MSIE");},
isFF : function(){return navigator.userAgent.hasSubString("Firefox");},
isOpera : function(){return navigator.userAgent.hasSubString("Opera")},
isSafari : function(){return navigator.userAgent.hasSubString("Safari");},
isGecko : function(){return navigator.userAgent.hasSubString("Gecko");},
IEVer : function(){return $.Browse.isIE() ? parseInt(navigator.userAgent.split(";")[1].trim().split(" ")[1]) : 0;}
}
$(document);
var Ajax={
xmlhttp:function (){
try{
return new ActiveXObject('Msxml2.XMLHTTP');
}catch(e){
try{
return new ActiveXObject('Microsoft.XMLHTTP');
}catch(e){
return new XMLHttpRequest();
}
}
}
};
Ajax.Request=function (){
if(arguments.length<2)return ;
var para = {asynchronous:true,method:"GET",parameters:""};
for (var key in arguments[1]){
para[key] = arguments[1][key];
}
var _x=Ajax.xmlhttp();
var _url=arguments[0];
if(para["parameters"].length>0) para["parameters"]+='&_=';
if(para["method"].toUpperCase()=="GET") _url+=(_url.match(/\?/)?'&':'?')+para["parameters"];
_x.open(para["method"].toUpperCase(),_url,para["asynchronous"]);
_x.onreadystatechange=function (){
if(_x.readyState==4){
if(_x.status==200)
para["onComplete"]?para["onComplete"](_x):"";
else{
para["onError"]?para["onError"](_x):"";
}
}
};
if(para["method"].toUpperCase()=="POST")_x.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
for (var ReqHeader in para["setRequestHeader"]){
_x.setRequestHeader(ReqHeader,para["setRequestHeader"][ReqHeader]);
}
_x.send(para["method"].toUpperCase()=="POST"?(para["postBody"]?para["postBody"]:para["parameters"]):null);
return _x;
};
$.Ajax = {
Request : function(url,_method,para,complete,error){return Ajax.Request(url,{method:_method,parameters:para,onComplete:complete,onError:error});},
get : function(url,complete,error){ return $.Ajax.Request(url+(url.indexOf("?")==-1?"?":"&")+Math.random(),"get","",complete,error); },
post : function(url,para,complete,error){ return $.Ajax.Request(url,"post",para,complete,error);},
update : function(url,id){ return $.Ajax.Request(url,(arguments[2]?"post":"get"),(arguments[2]?arguments[2]:Math.random()),function(x){if("INPUT,SELECT,BUTTON,TEXTAREA".hasSubString($(id).tagName,",")){$(id).value=x.responseText;}else{$(id).innerHTML=x.responseText;}});}
};
$.Cookies = {
get : function(n){
var dc = "; "+document.cookie+"; ";
var coo = dc.indexOf("; "+n+"=");
if (coo!=-1){
var s = dc.substring(coo+n.length+3,dc.length);
return unescape(s.substring(0, s.indexOf("; ")));
}else{
return null;
}
},
set : function(name,value,expires){
var expDays = expires*24*60*60*1000;
var expDate = new Date();
expDate.setTime(expDate.getTime()+expDays);
var expString = expires ? "; expires="+expDate.toGMTString() : "";
var pathString = ";path=/";
document.cookie = name + "=" + escape(value) + expString + pathString;
},
del : function(n){
var exp = new Date();
exp.setTime(exp.getTime() - 1);
var cval=this.get(n);
if(cval!=null) document.cookie= n + "="+cval+";expires="+exp.toGMTString();
}
}
$.Form = function(n){
return {
self : document.forms[n],
serialize : function(obj){
var para = "";
var arr = $.Form(n).self.elements;
var elem = {};
for(var i=0,j; j=arr[i]; i++){
if(j.disabled || !j.name){continue;}
if(j.type && j.type.toLowerCase().hasSubStrInArr(["radio","checkbox"]) && !j.checked){continue;}
var na = j.name.toLowerCase();
if(typeof elem[na] == "undefined"){
elem[na] = [];
}
elem[na].push($E(j.value));
}
return $.Form.serialize(obj,elem);
},
submit : function(url){
if(url){$.Form(n).self.setAttribute("action",url);}
$.Form(n).self.Submit();
}
};
}
$.Form.serialize = function(obj){
var elem = arguments[1] || {};
for(var key in obj){
var na = key.toLowerCase();
if(typeof elem[na] == "undefined"){
elem[na] = [];
}
elem[na].push($E(obj[key]));
}
var para = new StringBuffer();
for(var name in elem){
for(var i=0; i<elem[name].length; i++){
para.append(name+"="+elem[name][i]);
}
}
return para.toString("&");
}
$.Request = function(paras){
var url = location.search;
if(!url.hasSubString("?")){return "";}else{url=url.substring(1);}
var obj = {};
url.split("&").each(function(p){
var k = p.split("=");
var n = k[0].toLowerCase();
if(typeof obj[n] == "undefined"){
obj[n] = [];
}
obj[n].push(k[1]||"");
});
return obj[paras.toLowerCase()];
}
function $A(list){
var arr = [];
for (var i=0,len=list.length; i<len; i++){
arr[i] = list[i];
}
return arr;
}
function $D(str){return decodeURIComponent(str);}
function $E(str){return encodeURIComponent(str);}
function $V(id){return $(id)?$(id).value:"";}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -