ホームページ  >  記事  >  ウェブフロントエンド  >  AppBaseJs クラス ライブラリ インターネット上で一般的に使用される JavaScript 関数およびその他の JS クラス ライブラリ write_js オブジェクト指向

AppBaseJs クラス ライブラリ インターネット上で一般的に使用される JavaScript 関数およびその他の JS クラス ライブラリ write_js オブジェクト指向

WBOY
WBOYオリジナル
2016-05-16 18:33:13953ブラウズ
コードをコピー コードは次のとおりです:

/*-----------------------------------
Web アプリケーション JavaScript ライブラリ
2009.11 ジャンキー
-------------------------------------------------*/

//String原生对象扩展 置空左右端空格
String.prototype.trim = function(){
return this.replace(/(^[sntr]*)|([snrt]*$​​) /g, "");
};
//Date原生对象扩展 格式化输出
Date.prototype.format = function (string) {
var self = this;
var p = function p(s) {
return (s.toString().length == 1) ? "0" s : s;
};
文字列を返しますか? 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() case "h": return self.getHours() ケース "H": return self.getHours();
ケース "mm": return p(self.getMinutes()); ;
ケース "ss": return p(self.getSeconds());
ケース "yyyy": return self.getFullyear(); 🎜>case "yy": return self.getFull Year().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(); : return self.getMonthName();
case "MMM": return self.getMonthName(true);
case "MM": return p((self.getMonth()
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;
});
オブジェクトを返します;
};
//遍历
App.each = function(obj, func, context) {
var length = obj.length, i = -1;
if(length !== unknown) {
while( i < length) if(func.call(context, obj[i], i, obj, length) === false) Break;
}
else for(obj の var key) if(obj.hasOwnProperty(key)) if(func.call(context, key, obj[key], obj) === false) Break;
オブジェクトを返します;
};
(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;
; if (isIE) {
if (docelem.doScroll && win.self == win.top) {
(function() {
if (isReady) return;
try {
docelem .doScroll("left");
} catch (エラー) {
return;
}
}; ();
}else {
if (isReady) return;
this.attachEvent("onreadystatechange", function() {
if (doc.readyState === "complete") {
doc.detachEvent("onreadystatechange", argument.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,
});
win.addEventListener('load', doReady, false);
}else {
if (!isFF)
this.addEventListener("DOMContentLoaded", function() {
doc.removeEventListener("DOMContentLoaded", argument.callee, false);
doReady();
}、false);
this.addEventListener('load', doReady, false);
}
};
App.extend(App,{
//类型检测
isArray: function(v) { //否か数组
return string.apply(v) === "[オブジェクト配列] ";
},
isFunction: function(v) { //否か関数数体
return string.apply(v) === "[オブジェクト関数]";
},
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;
},
//名前要素のコレクションを取得します
$N:function(name){
return doc.getElementsByName(name);
//タグ要素のコレクションを取得します
$T:function(tag, root){
return (root || doc).getElementsByTagName(tag);
},
//By属性名 (含まれるかどうか)、値、範囲は要素のセットを取ります
$A:function(attrName, attrValue, tag, root){
var elems = doc.all : this. $T( tag || "*",root || doc), result = [],
attVal = (typeof attrValue != "unknown")? new RegExp("(^|\s)" attrValue "( \s|$)" ) : null;
for(var i=0; iattr = elems[i][attrName] || elems[i].getAttribute( attrName);
if(attr の種類 === "文字列" && attr.length > 0){
if(attrValue の種類 === "未定義" || (attVal && attVal.test(attr)) ){
result .push(elems[i]);
}
}
}
return result;
// ボディ要素を取得します。 $B: docelem,
//クラス属性要素のコレクションを取得します
$C:function(attrValue, tag, root){
return this.$A("className", attrValue, tag, root);
},
// ブラウザ ウィンドウの幅を取得します
getWinWidth: win.innerWidth || doc.body.clientWidth || を取得します。ブラウザウィンドウの高さ
getWinHeight : win.innerHeight || doc.body.clientHeight,
// 要素のスタイルを取得します
getStyle: function(elem,name){
if( elem.style[名前]){
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(); = 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}; || 関数(o){
var x = 0, y = 0;
do{ x = o.offsetLeft;y = o.offsetTop;}while((o=o.offsetParent)); };
}(),
//透明度を設定します
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"
},
//要素クラスの属性操作
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 テキスト オブジェクトを追加(テーブルをサポート)
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);
elem.insertAdjacentHTML("beforeEnd") , text);
}
}else {
var rlt = null, rg = doc.createRange(), fm = rg.createContextualFragment(text); 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 = argument ,loads = function(){
if(doc.images){ if(!doc.ps) doc.ps = [];
var i,j=doc.ps.長さ; for(i=0 ; iif (a[i].indexOf("#")!=0){ doc.ps[j] = 新しい画像; [j ].src=a [i];}}
}
arguments.callee.caller ?
},

/ /Event binding
binding: 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); ["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.clientY ? docelem.scrollTop
};
},
//バインド ドラッグ イベント
drag: function (obj, obj2){//obj: 移動オブジェクト obj2: ドラッグ ポイント
obj2 = obj2 | | obj; // ドラッグ ポイントがない場合、ドラッグ ポイントは移動オブジェクトです。
obj2.onmousedown = function(e) {
e = e || win.event;
ut.preventDefault(e);
obj.setCapture && obj.setCapture();
x = ut.getXY(e).x - parseInt );
y = ut.getXY(e).y - parseInt(obj.style.top);
docelem.onmouseup = 上;関数 over(e){
e = e ||
obj.style.left = ut.getXY(e).x - x "px"; 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){
ut.preventDefault(e);
obj.setCapture && obj.setCapture( );
t = ut.getXY(e).x - parseInt(obj.style.left);
docelem.onmouseup = 上;関数 over(e){
e = e || win.event;
x = ut.getXY(e).x - t; if(x>x2) x=x2;
obj.style.left = x "px";
overEvent && overEvent(x);
関数 up(){
obj .releaseCapture && obj.releaseCapture();
docelem.onmousemove = 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);
t = ut.getXY (e).y - parseInt style.top);
docelem.onmouseup = up;
関数 over(e){
e = e || >y = ut.getXY(e).y - t;
if(yif(y>y2) y=y2; "px";
overEvent && overEvent(y);
function up(){
docelem.onmousemove = null; >docelem.onmouseup = null;
upEvent && upEvent(y);
}
},
// クッキーを設定します
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 インスタンス? date: Date(date.replace("-","/"));
return isNaN(dt.getTime()) ?
; 🎜>//オブジェクトへの 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`).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 = {幅:幅||1, 高さ:高さ||1}, o2 = {};
if (this.isIE){
tagName = "オブジェクト ";
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.movi​​e = URL;
o2.quality = "高";
param && this.extend(o2, param);
}else{
tagName = "埋め込み ";
o1.type = "application/x-shockwave-flash";
o1.pluginspage = "http://www.adobe.com/go/getflashplayer_cn";
o1.src = URL;
o1.quality = "高";
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('');
「<」を返すtagName a1.join(' ') '>' a2.join('') '';
};
//播放器生成代码
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 = {幅:幅||1、高さ:高さ||1}、o2 = {};
if (this.isIE){
tagName = "オブジェクト ";
o1.classid = "clsid:" mp[0];
o2.url = URL;
param && this.extend(o2, param);
}else{
tagName = "埋め込み ";
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('');
「<」を返すtagName a1.join(' ') '>' a2.join('') '';
};
//获取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;itry{
return new ActiveXObject(a[i]);
}catch(e){}
}
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);
};

一部関数数未经测试,欢迎大家提个意见
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。