发布于 2016-09-20 13:28:33 | 80 次阅读 | 评论: 0 | 来源: 网友投递

这里有新鲜出炉的Javascript教程,程序狗速度看过来!

JavaScript客户端脚本语言

Javascript 是一种由Netscape的LiveScript发展而来的原型化继承的基于对象的动态类型的区分大小写的客户端脚本语言,主要目的是为了解决服务器端语言,比如Perl,遗留的速度问题,为客户提供更流畅的浏览效果。


AppBaseJs类库。一个借鉴了网上常用的函数及其他js类库写的,方便大家的调用。

/*----------------------------------- 
Web Application JavaScript Library 
2009.11 janchie 
------------------------------------*/ 

//String原生对象扩展 置空左右端空格 
String.prototype.trim = function(){ 
return this.replace(/(^[\s\n\t\r]*)|([\s\n\r\t]*$)/g, ""); 
}; 
//Date原生对象扩展 格式化输出 
Date.prototype.format = function (string) { 
var self = this; 
var p = function p(s) { 
return (s.toString().length == 1) ? "0" + s : s; 
}; 
return string ? string.replace(/dd?d?d?|MM?M?M?|yy?y?y?|hh?|HH?|mm?|ss?|tt?|zz?z?/g, 
function (string) { 
switch (string) { 
case "hh": return p(self.getHours() < 13 ? self.getHours() : (self.getHours() - 12)); 
case "h": return self.getHours() < 13 ? self.getHours() : (self.getHours() - 12); 
case "HH": return p(self.getHours()); 
case "H": return self.getHours(); 
case "mm": return p(self.getMinutes()); 
case "m": return self.getMinutes(); 
case "ss": return p(self.getSeconds()); 
case "s": return self.getSeconds(); 
case "yyyy": return self.getFullYear(); 
case "yy": return self.getFullYear().toString().substring(2, 4); 
case "dddd": return self.getDayName(); 
case "ddd": return self.getDayName(true); 
case "dd": return p(self.getDate()); 
case "d": return self.getDate().toString(); 
case "MMMM": return self.getMonthName(); 
case "MMM": return self.getMonthName(true); 
case "MM": return p((self.getMonth() + 1)); 
case "M": return self.getMonth() + 1; 
case "t": return self.getHours() < 12 ? Date.CultureInfo.amDesignator.substring(0, 1) : Date.CultureInfo.pmDesignator.substring(0, 1); 
case "tt": return self.getHours() < 12 ? Date.CultureInfo.amDesignator : Date.CultureInfo.pmDesignator; 
case "zzz": 
case "zz": 
case "z": return ""; 
} 
}) : this.toString(); 
}; 
/*------------------------------------*/ 

//声明对象 
var App = {}; 
//对象继承或属性合并 
App.extend = function(obj, hash) { 
this.each(hash, function(key, value) { 
obj[key] = value; 
}); 
return obj; 
}; 
//遍历 
App.each = function(obj, func, context) { 
var length = obj.length, i = -1; 
if(length !== undefined) { 
while(++i < length) if(func.call(context, obj[i], i, obj, length) === false) break; 
} 
else for(var key in obj) if(obj.hasOwnProperty(key)) if(func.call(context, key, obj[key], obj) === false) break; 
return obj; 
}; 
(function(doc, win){ 
var string = Object.prototype.toString, 
quirks = doc.compatMode === "BackCompat", 
docelem = doc.documentElement, 
ua = win.navigator.userAgent.toLowerCase(), 
version = (ua.match( /.(?:rv|it|ra|ie)[\/: ]([\d.]+)/ ) || [])[1], 
isChrome = /chrome/.test(ua), 
isWebKit = /webkit/.test(ua), 
isSafari = !isChrome && isWebKit, 
isOpera = /opera/.test(ua), 
isIE = /msie/.test( ua ) && !isOpera, 
isFF = /firefox/.test(ua); 
//Dom加载 
doc.ready = function(func) { 
var isReady = false,doReady = function() { 
if (isReady) return; 
isReady = true; func(); 
}; 
if (isIE) { 
if (docelem.doScroll && win.self == win.top) { 
(function() { 
if (isReady) return; 
try { 
docelem.doScroll("left"); 
} catch (error) { 
setTimeout(arguments.callee, 0); 
return; 
} 
doReady(); 
})(); 
}else { 
if (isReady) return; 
this.attachEvent("onreadystatechange", function() { 
if (doc.readyState === "complete") { 
doc.detachEvent("onreadystatechange", arguments.callee); 
doReady(); 
} 
}); 
} 
win.attachEvent('onload', doReady); 
}else if (isWebKit && version < 525) { 
(function() { 
if (isReady) return; 
if (/loaded|complete/.test(doc.readyState)) 
doReady(); 
else 
setTimeout(arguments.callee, 0); 
})(); 
win.addEventListener('load', doReady, false); 
}else { 
if (!isFF) 
this.addEventListener("DOMContentLoaded", function() { 
doc.removeEventListener("DOMContentLoaded", arguments.callee, false); 
doReady(); 
}, false); 
this.addEventListener('load', doReady, false); 
} 
}; 
App.extend(App,{ 
//类型检测 
isArray: function(v) { //是否为数组 
return string.apply(v) === "[object Array]"; 
}, 
isFunction: function(v) { //是否为函数体 
return string.apply(v) === "[object Function]"; 
}, 
isNumber: function(v) { //是否为数字 
return typeof v === "number" && isFinite(v); 
}, 
isDate: function(v) { //是否为日期 
return string.apply(v) === "[object Date]"; 
}, 
isElement: function(v) { //是否为Dom元素节点 
return !!(v && v.nodeType === 1); 
}, 
// 浏览器检测 
isOpera: isOpera, 
isChrome: isChrome, 
isWebKit: isWebKit, 
isSafari: isSafari, 
isIE: isIE, 
isFF: isFF, 
isQuirks:quirks, 
getVersion:version, 

//取id元素 
$: function(id) { 
return typeof id === "string" ? doc.getElementById(id) : id; 
}, 
//取name元素集合 
$N:function(name){ 
return doc.getElementsByName(name); 
}, 
//取tag元素集合 
$T:function(tag, root){ 
return (root || doc).getElementsByTagName(tag); 
}, 
//按属性名(是否包含)、值、范围取元素集合 
$A:function(attrName, attrValue, tag, root){ 
var elems = doc.all ? doc.all : this.$T( tag || "*",root || doc), result = [], 
attVal = (typeof attrValue != "undefined")? new RegExp("(^|\\s)" + attrValue + "(\\s|$)") : null; 
for(var i=0; i<elems.length; i++){ 
attr = elems[i][attrName] || elems[i].getAttribute(attrName); 
if(typeof attr === "string" && attr.length > 0){ 
if(typeof attrValue === "undefined" || (attVal && attVal.test(attr))){ 
result.push(elems[i]); 
} 
} 
} 
return result; 
}, 
//取body元素 
$B: doc.body || docelem, 
//取Class属性元素集合 
$C:function(attrValue, tag, root){ 
return this.$A("className",attrValue, tag, root); 
}, 
//取浏览器窗体宽度 
getWinWidth: win.innerWidth || docelem.clientWidth || doc.body.clientWidth, 
//取浏览器窗体高度 
getWinHeight: win.innerHeight || docelem.clientHeight || doc.body.clientHeight, 
//取元素样式 
getStyle: function(elem,name){ 
if(elem.style[name]){ 
return elem.style[name]; 
}else if(elem.currentStyle){ 
return elem.currentStyle[name]; 
}else if(doc.defaultView && doc.defaultView.getComputedStyle){ 
name = name.replace(/([A-Z])/g,"-$1"); 
name = name.toLowerCase(); 
var s = doc.defaultView.getComputedStyle(elem,""); 
return s && s.getPropertyValue(name); 
}else{ 
return null; 
} 
}, 
//获取元素屏幕坐标值 
getPosition: function() { 
return docelem.getBoundingClientRect && function(o){ 
var pos = o.getBoundingClientRect(), root = o.ownerDocument || o.doc; 
return {left:pos.left+root.documentElement.scrollLeft,top:pos.top+root.documentElement.scrollTop}; 
} || function(o){ 
var x = 0, y = 0; 
do{x += o.offsetLeft;y += o.offsetTop;}while((o=o.offsetParent)); 
return {left:x,top:y}; 
}; 
}(), 
//设置透明度 
setOpacity: function (elem,num){ 
if(elem.filters){ 
elem.style.filter = "alpha(opacity="+num+")"; 
}else{ 
elem.style.opacity = num/100; 
} 
}, 
//隐藏或显示元素 
hide: function(elem){elem.style.display = "none";}, 
show: function(elem){elem.style.display = "block";}, 
toggle: function(elem){ 
elem.style.display = this.getStyle(elem,"display") === "none" ?"block":"none"; 
}, 
//元素Class属性操作 
addClass: function(elem, clsName) { 
if (elem.className === '') { 
elem.className = clsName; 
}else if (elem.className !== '' && (' ' + elem.className + ' ').indexOf(' ' + clsName + ' ') === -1) { 
elem.className = elem.className + ' ' + clsName; 
} 
}, 
removeClass: function(elem, clsName) { 
if (clsName && (' ' + elem.className + ' ').indexOf(' ' + clsName + ' ') > -1) { 
elem.className = (' ' + elem.className + ' ').replace(' ' + clsName + ' ', ' ').replace(/^ | $/g,''); 
} 
}, 
//追加Html文本对象( 支持Table ) 
append: function(elem, text) { 
if (typeof text === "string") { 
if (elem.insertAdjacentHTML){ 
if (elem.tagName === "TABLE"){ 
var html = elem.outerHTML,ep = elem.parentNode,sl = html.length; 
text = html.substr(0,sl-8) + text + html.substr(sl-8,sl); 
ep.insertAdjacentHTML("beforeEnd", text); 
ep.replaceChild(ep.lastChild,elem); 
}else{ 
elem.insertAdjacentHTML("beforeEnd", text); 
} 
}else { 
var rlt = null, rg = doc.createRange(), fm = rg.createContextualFragment(text); 
rlt ? elem.insertBefore(fm, rlt) : elem.appendChild(fm); 
} 
}else if (typeof text === "object") elem.appendChild(text); 
}, 
//删除元素 
remove:function(elem){ 
if (elem.parentNode) elem.parentNode.removeChild(elem); 
}, 
//置空元素内容及子节点 
empty:function(elem){ 
while(elem.firstChild){ 
elem.removeChild(elem.firstChild); 
} 
}, 
//图像预加载 
loadimages: function(){ 
var a = arguments,loads = function(){ 
if(doc.images){ if(!doc.ps) doc.ps = []; 
var i,j=doc.ps.length; for(i=0; i<a.length; i++) 
if (a[i].indexOf("#")!=0){ doc.ps[j] = new Image; doc.ps[j++].src=a[i];}} 
}; 
arguments.callee.caller ? loads():doc.ready(loads); 
}, 

//事件绑定 
bind: function () { 
if (win.addEventListener) { 
return function(elem, sType, fnc) { 
elem.addEventListener(sType, fnc, false); 
}; 
} else if (win.attachEvent) { 
return function(elem, sType, fnc) { 
elem.attachEvent("on" + sType, fnc); 
}; 
} else { 
return function(){}; 
} 
}(), 
//解除事件绑定 
unbind: function(elem, sType, fnc){ 
if(elem.removeEventListener){ 
elem.removeEventListener(sType, fnc, false); 
}else if(elem.detachEvent){ 
elem.detachEvent("on" + sType, fnc); 
}else{ 
elem["on"+ sType] = null; 
} 
}, 
//禁止事件冒泡 
stopPropagation: function(ev) { 
if (ev.stopPropagation) { 
ev.stopPropagation(); 
} else { 
ev.cancelBubble = true; 
} 
}, 
//禁止默认事件动作 
preventDefault: function(ev) { 
if (ev.preventDefault) { 
ev.preventDefault(); 
} else { 
ev.returnValue = false; 
} 
}, 
//获取鼠标位置 
getXY: function(ev){ 
return { 
x:ev.pageX ? ev.pageX : ev.clientX + docelem.scrollLeft, 
y:ev.pageY ? ev.pageY : ev.clientY + docelem.scrollTop 
}; 
}, 
//绑定拖动事件 
drag: function (obj, obj2){//obj:移动的对象 obj2:拖动点 
obj2 = obj2 || obj; //如果不设拖动点,那么拖动点即移动的对象 
var x, y, ut = this; 
obj2.onmousedown = function(e){ 
e = e || win.event; 
ut.preventDefault(e); 
obj.setCapture && obj.setCapture(); 
x = ut.getXY(e).x - parseInt(obj.style.left); 
y = ut.getXY(e).y - parseInt(obj.style.top); 
docelem.onmousemove = over; 
docelem.onmouseup = up; 
} 
function over(e){ 
e = e || win.event; 
obj.style.left = ut.getXY(e).x - x + "px"; 
obj.style.top = ut.getXY(e).y - y + "px"; 
} 
function up(){ 
obj.releaseCapture && obj.releaseCapture(); 
docelem.onmousemove = null; 
docelem.onmouseup = null; 
} 
}, 
//绑定横向滚动事件 
sliderX : function (obj,x1,x2,overEvent,upEvent){ 
var x, t , ut = this; 
obj.onmousedown = function (e){ 
e = e || win.event; 
ut.preventDefault(e); 
obj.setCapture && obj.setCapture(); 
t = ut.getXY(e).x - parseInt(obj.style.left); 
docelem.onmousemove = over; 
docelem.onmouseup = up; 
} 
function over(e){ 
e = e || win.event; 
x = ut.getXY(e).x - t; 
if(x<x1) x=x1; 
if(x>x2) x=x2; 
obj.style.left = x + "px"; 
overEvent && overEvent(x); 
} 
function up(){ 
obj.releaseCapture && obj.releaseCapture(); 
docelem.onmousemove = null; 
docelem.onmouseup = null; 
upEvent && upEvent(x); 
} 
}, 
//绑定竖向滚动事件 
sliderY : function (obj,y1,y2,overEvent,upEvent){ 
var y, t , ut = this; 
obj.onmousedown = function (e){ 
e = e || win.event; 
ut.preventDefault(e); 
obj.setCapture && obj.setCapture(); 
t = ut.getXY(e).y - parseInt(obj.style.top); 
docelem.onmousemove = over; 
docelem.onmouseup = up; 
} 
function over(e){ 
e = e || win.event; 
y = ut.getXY(e).y - t; 
if(y<y1) y=y1; 
if(y>y2) y=y2; 
obj.style.top = y + "px"; 
overEvent && overEvent(y); 
} 
function up(){ 
obj.releaseCapture && obj.releaseCapture(); 
docelem.onmousemove = null; 
docelem.onmouseup = null; 
upEvent && upEvent(y); 
} 
}, 
//设置cookie 
setCookie:function(n, v, t){ 
var exp = new Date(); 
exp.setTime(exp.getTime() + (t||24)*60*60*1000); 
doc.cookie = n + "="+ escape(v) + ";expires=" + exp.toGMTString()+';path=/'; 
}, 
//获取cookie 
getCookie:function(n){ 
var arr = doc.cookie.match(new RegExp("(^| )"+ n +"=([^;]*)(;|$)")); 
if(arr != null) return unescape(arr[2]); 
return null; 
} 
}); 
})(document,window); 

//日期字符串格转日期 
App.parseDate = function(date){ 
var dt = date instanceof Date ? date: Date(date.replace("-","/")); 
return isNaN(dt.getTime()) ? null : dt ; 
}; 
//Json字符串转对象 
App.parseJSON = function(jsonString) { 
var result = false; 
try { 
result = eval('(' + jsonString + ')'); 
}catch (e) {}; 
return result; 
}; 
//取不重复唯一值 
App.getUid = function(){ 
return "uid"+(new Date()).getTime()+ parseInt(Math.random()*100000); 
}; 
//获取指定范围的随机数 
App.random = function (n1, n2){ 
return Math.floor(Math.random()*(n2-n1+1)) + n1; 
}; 
//秒转换为毫秒 
App.s2ms = function (str){ 
var t = str.split(":"); 
return t[0] * 60000 + t[1] * 1000; 
}; 
//毫秒转换为秒 
App.ms2s = function (ms){ 
return (ms/60000+":"+ms/1000%60).replace(/\.\d+/g,"").replace(/(^|:)(\d)(?!\d)/g,"$10$2"); 
}; 
//数字转换为编号 
App.num2number = function (num, n){ 
return Array(n).join("0").concat(num).slice(-n); 
}; 
//数字转化为中文 
App.num2gb = function (n){ 
return "零一二三四五六七八九".split("")[n]; 
}; 
//Flash生成代码 
App.getFlash = function (url, width, height, param){ 
var tagName = "", o1 = {width:width||1, height:height||1}, o2 = {}; 
if (this.isIE){ 
tagName = "object "; 
o1.classid = "clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"; 
o1.codebase = "http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=10,0,0,0"; 
o2.movie = url; 
o2.quality = "high"; 
param && this.extend(o2, param); 
}else{ 
tagName = "embed "; 
o1.type = "application/x-shockwave-flash"; 
o1.pluginspage = "http://www.adobe.com/go/getflashplayer_cn"; 
o1.src = url; 
o1.quality = "high"; 
param && this.extend(o1, param); 
} 
if(o1.width<2&&o1.height<2) tagName+='style="position:absolute; top:-100px;" '; 
var a1=[], a2=[], i; 
for(i in o1) a1.push(i+'="'+o1[i]+'"'); 
for(i in o2) a2.push('<param name="'+i+'" value="'+o2[i]+'" />'); 
return '<'+tagName+a1.join(' ')+'>'+a2.join('')+'</'+tagName+'>'; 
}; 
//播放器生成代码 
App.getPlayer = function (url, width, height, param){ 
var wmp = ["6bf52a52-394a-11d3-b153-00c04f79faa6","application/x-mplayer2"]; 
var rmp = ["CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFA","audio/x-pn-realaudio-plugin"]; 
var mp = /\.rm$/.test(url) ? rmp : wmp; 
var tagName = "", o1 = {width:width||1, height:height||1}, o2 = {}; 
if (this.isIE){ 
tagName = "object "; 
o1.classid = "clsid:"+mp[0]; 
o2.url = url; 
param && this.extend(o2, param); 
}else{ 
tagName = "embed "; 
o1.type = mp[1]; 
o1.src = url; 
param && this.extend(o1, param); 
} 
if(o1.width<2&&o1.height<2) tagName+='style="position:absolute; top:-100px;" '; 
var a1=[], a2=[], i; 
for(i in o1) a1.push(i+'="'+o1[i]+'"'); 
for(i in o2) a2.push('<param name="'+i+'" value="'+o2[i]+'" />'); 
return '<'+tagName+a1.join(' ')+'>'+a2.join('')+'</'+tagName+'>'; 
}; 
//获取XMLHttp对象 
App.xmlhttp = function (){ 
if (this.isFF) return new XMLHttpRequest(); 
var a = ["Msxml2.XMLHTTP.3.0","Msxml2.XMLHTTP","Microsoft.XMLHTTP","Msxml2.XMLHTTP.4.0","Msxml2.XMLHTTP.5.0"]; 
for (var i=0,l=a.length;i<l;i++){ 
try{ 
return new ActiveXObject(a[i]); 
}catch(e){} 
} 
return false; 
}; 
//Get数据 
App.get = function (url,callBack){ 
var x = this.xmlhttp(); 
x.open("get",url,true); 
x.onreadystatechange = function(){ 
x.readyState==4 && (x.status==0||x.status==200) && callBack(x.responseText); 
} 
x.send(null); 
}; 
//Post数据 
App.post = function (url,arg,callBack){ 
var x = this.xmlhttp(); 
x.open("post",url,true); 
x.setRequestHeader("Content-Length",arg.length); 
x.setRequestHeader("Content-Type","application/x-www-form-urlencoded"); 
x.onreadystatechange = function(){ 
x.readyState==4 && (x.status==0||x.status==200) && callBack(x.responseText); 
} 
x.send(arg); 
}; 

有少量函数未经测试,欢迎大家提个意见

最新网友评论  共有(0)条评论 发布评论 返回顶部

Copyright © 2007-2017 PHPERZ.COM All Rights Reserved   冀ICP备14009818号  版权声明  广告服务