CJL.0.1.js
- /*!
- * Cloudgamer JavaScript Library v0.1
- * Copyright (c) 2009 cloudgamer
- * Blog: http://cloudgamer.cnblogs.com/
- * Date: 2009-10-15
- */
- var $$, $$B, $$A, $$F, $$D, $$E, $$CE, $$S;
- (function(undefined){
- var O, B, A, F, D, E, CE, S;
- /*Object*/
- O = function (id) {
- return "string" == typeof id ? document.getElementById(id) : id;
- };
- O.emptyFunction = function(){};
- O.extend = function (destination, source, override) {
- if (override === undefined) override = true;
- for (var property in source) {
- if (override || !(property in destination)) {
- destination[property] = source[property];
- }
- }
- return destination;
- };
- O.deepextend = function (destination, source) {
- for (var property in source) {
- var copy = source[property];
- if ( destination === copy ) continue;
- if ( typeof copy === "object" ){
- destination[property] = arguments.callee( destination[property] || {}, copy );
- }else{
- destination[property] = copy;
- }
- }
- return destination;
- };
- /*from youa*/
- O.wrapper = function(me, parent) {
- var ins = function() { me.apply(this, arguments); };
- var subclass = function() {};
- subclass.prototype = parent.prototype;
- ins.prototype = new subclass;
- return ins;
- };
- /*Browser*/
- /*from youa*/
- B = (function(ua){
- var b = {
- msie: /msie/.test(ua) && !/opera/.test(ua),
- opera: /opera/.test(ua),
- safari: /webkit/.test(ua) && !/chrome/.test(ua),
- firefox: /firefox/.test(ua),
- chrome: /chrome/.test(ua)
- };
- var vMark = "";
- for (var i in b) {
- if (b[i]) { vMark = "safari" == i ? "version" : i; break; }
- }
- b.version = vMark && RegExp("(?:" + vMark + ")[\\/: ]([\\d.]+)").test(ua) ? RegExp.$1 : "0";
- b.ie = b.msie;
- b.ie6 = b.msie && parseInt(b.version, 10) == 6;
- b.ie7 = b.msie && parseInt(b.version, 10) == 7;
- b.ie8 = b.msie && parseInt(b.version, 10) == 8;
- return b;
- })(window.navigator.userAgent.toLowerCase());
- /*Array*/
- A = function(){
- var ret = {
- isArray: function( obj ) {
- return Object.prototype.toString.call(obj) === "[object Array]";
- },
- indexOf: function( array, elt, from ){
- if (array.indexOf) {
- return isNaN(from) ? array.indexOf(elt) : array.indexOf(elt, from);
- } else {
- var len = array.length;
- from = isNaN(from) ? 0
- : from < 0 ? Math.ceil(from) + len : Math.floor(from);
- for ( ; from < len; from++ ) { if ( array[from] === elt ) return from; }
- return -1;
- }
- },
- lastIndexOf: function( array, elt, from ){
- if (array.lastIndexOf) {
- return isNaN(from) ? array.lastIndexOf(elt) : array.lastIndexOf(elt, from);
- } else {
- var len = array.length;
- from = isNaN(from) || from >= len - 1 ? len - 1
- : from < 0 ? Math.ceil(from) + len : Math.floor(from);
- for ( ; from > -1; from-- ) { if ( array[from] === elt ) return from; }
- return -1;
- }
- }
- };
- function each( object, callback ) {
- if ( undefined === object.length ){
- for ( var name in object ) {
- if (false === callback( object[name], name, object )) break;
- }
- } else {
- for ( var i = 0, len = object.length; i < len; i++ ) {
- if (i in object) { if (false === callback( object[i], i, object )) break; }
- }
- }
- };
- each({
- forEach: function( object, callback, thisp ){
- each( object, function(){ callback.apply(thisp, arguments); } );
- },
- map: function( object, callback, thisp ){
- var ret = [];
- each( object, function(){ ret.push(callback.apply(thisp, arguments)); });
- return ret;
- },
- filter: function( object, callback, thisp ){
- var ret = [];
- each( object, function(item){
- callback.apply(thisp, arguments) && ret.push(item);
- });
- return ret;
- },
- every: function( object, callback, thisp ){
- var ret = true;
- each( object, function(){
- if ( !callback.apply(thisp, arguments) ){ ret = false; return false; };
- });
- return ret;
- },
- some: function( object, callback, thisp ){
- var ret = false;
- each( object, function(){
- if ( callback.apply(thisp, arguments) ){ ret = true; return false; };
- });
- return ret;
- }
- }, function(method, name){
- ret[name] = function( object, callback, thisp ){
- if (object[name]) {
- return object[name]( callback, thisp );
- } else {
- return method( object, callback, thisp );
- }
- }
- });
- return ret;
- }();
- /*Function*/
- F = (function(){
- var slice = Array.prototype.slice;
- return {
- bind: function( fun, thisp ) {
- var args = slice.call(arguments, 2);
- return function() {
- return fun.apply(thisp, args.concat(slice.call(arguments)));
- }
- },
- bindAsEventListener: function( fun, thisp ) {
- var args = slice.call(arguments, 2);
- return function(event) {
- return fun.apply(thisp, [E.fixEvent(event)].concat(args));
- }
- }
- };
- })();
- /*Dom*/
- D = {
- getScrollTop: function(node) {
- var doc = node ? node.ownerDocument : document;
- return doc.documentElement.scrollTop || doc.body.scrollTop;
- },
- getScrollLeft: function(node) {
- var doc = node ? node.ownerDocument : document;
- return doc.documentElement.scrollLeft || doc.body.scrollLeft;
- },
- contains: document.defaultView
- ? function (a, b) { return !!( a.compareDocumentPosition(b) & 16 ); }
- : function (a, b) { return a != b && a.contains(b); },
- rect: function(node){
- var left = 0, top = 0, right = 0, bottom = 0;
- //ie8的getBoundingClientRect获取不准确
- if ( !node.getBoundingClientRect || B.ie8 ) {
- var n = node;
- while (n) { left += n.offsetLeft, top += n.offsetTop; n = n.offsetParent; };
- right = left + node.offsetWidth; bottom = top + node.offsetHeight;
- } else {
- var rect = node.getBoundingClientRect();
- left = right = D.getScrollLeft(node); top = bottom = D.getScrollTop(node);
- left += rect.left; right += rect.right;
- top += rect.top; bottom += rect.bottom;
- };
- return { "left": left, "top": top, "right": right, "bottom": bottom };
- },
- clientRect: function(node) {
- var rect = D.rect(node), sLeft = D.getScrollLeft(node), sTop = D.getScrollTop(node);
- rect.left -= sLeft; rect.right -= sLeft;
- rect.top -= sTop; rect.bottom -= sTop;
- return rect;
- },
- curStyle: document.defaultView
- ? function (elem) { return document.defaultView.getComputedStyle(elem, null); }
- : function (elem) { return elem.currentStyle; },
- getStyle: document.defaultView
- ? function (elem, name) {
- var style = document.defaultView.getComputedStyle(elem, null);
- return name in style ? style[ name ] : style.getPropertyValue( name );
- }
- : function (elem, name) {
- var style = elem.style, curStyle = elem.currentStyle;
- //透明度 from youa
- if ( name == "opacity" ) {
- if ( /alpha\(opacity=(.*)\)/i.test(curStyle.filter) ) {
- var opacity = parseFloat(RegExp.$1);
- return opacity ? opacity / 100 : 0;
- }
- return 1;
- }
- if ( name == "float" ) { name = "styleFloat"; }
- var ret = curStyle[ name ] || curStyle[ S.camelize( name ) ];
- //单位转换 from jqury
- if ( !/^-?\d+(?:px)?$/i.test( ret ) && /^\-?\d/.test( ret ) ) {
- var left = style.left, rtStyle = elem.runtimeStyle, rsLeft = rtStyle.left;
- rtStyle.left = curStyle.left;
- style.left = ret || 0;
- ret = style.pixelLeft + "px";
- style.left = left;
- rtStyle.left = rsLeft;
- }
- return ret;
- },
- setStyle: function(elems, style, value) {
- if ( !elems.length ) { elems = [ elems ]; }
- if ( typeof style == "string" ) { var s = style; style = {}; style[s] = value; }
- A.forEach( elems, function(elem ) {
- for (var name in style) {
- var value = style[name];
- if (name == "opacity" && B.ie) {
- //ie透明度设置 from jquery
- elem.style.filter = (elem.currentStyle && elem.currentStyle.filter || "").replace( /alpha\([^)]*\)/, "" ) + " alpha(opacity=" + (value * 100 | 0) + ")";
- } else if (name == "float") {
- elem.style[ B.ie ? "styleFloat" : "cssFloat" ] = value;
- } else {
- elem.style[ S.camelize( name ) ] = value;
- }
- };
- });
- },
- getSize: function(elem) {
- var width = elem.offsetWidth, height = elem.offsetHeight;
- if ( !width && !height ) {
- var repair = !D.contains( document.body, elem ), parent;
- if ( repair ) {//如果元素不在body上
- parent = elem.parentNode;
- document.body.insertBefore(elem, document.body.childNodes[0]);
- }
- var style = elem.style,
- cssShow = { position: "absolute", visibility: "hidden", display: "block", left: "-9999px", top: "-9999px" },
- cssBack = { position: style.position, visibility: style.visibility, display: style.display, left: style.left, top: style.top };
- D.setStyle( elem, cssShow );
- width = elem.offsetWidth; height = elem.offsetHeight;
- D.setStyle( elem, cssBack );
- if ( repair ) {
- parent ? parent.appendChild(elem) : document.body.removeChild(elem);
- }
- }
- return { "width": width, "height": height };
- }
- };
- /*Event*/
- E = (function(){
- /*from dean edwards*/
- var addEvent, removeEvent, guid = 1,
- storage = function( element, type, handler ){
- if (!handler.$$guid) handler.$$guid = guid++;
- if (!element.events) element.events = {};
- var handlers = element.events[type];
- if (!handlers) {
- handlers = element.events[type] = {};
- if (element["on" + type]) {
- handlers[0] = element["on" + type];
- }
- }
- };
- if ( window.addEventListener ) {
- var fix = { "mouseenter": "mouseover", "mouseleave": "mouseout" };
- addEvent = function( element, type, handler ){
- if ( type in fix ) {
- storage( element, type, handler );
- var fixhandler = element.events[type][handler.$$guid] = function(event){
- var related = event.relatedTarget;
- if ( !related || (element != related && !(element.compareDocumentPosition(related) & 16)) ){
- handler.call(this, event);
- }
- };
- element.addEventListener(fix[type], fixhandler, false);
- } else {
- element.addEventListener(type, handler, false);
- };
- };
- removeEvent = function( element, type, handler ){
- if ( type in fix ) {
- if (element.events && element.events[type]) {
- element.removeEventListener(fix[type], element.events[type][handler.$$guid], false);
- delete element.events[type][handler.$$guid];
- }
- } else {
- element.removeEventListener(type, handler, false);
- };
- };
- } else {
- addEvent = function( element, type, handler ){
- storage( element, type, handler );
- element.events[type][handler.$$guid] = handler;
- element["on" + type] = handleEvent;
- };
- removeEvent = function( element, type, handler ){
- if (element.events && element.events[type]) {
- delete element.events[type][handler.$$guid];
- }
- };
- function handleEvent() {
- var returnValue = true, event = fixEvent();
- var handlers = this.events[event.type];
- for (var i in handlers) {
- this.$$handleEvent = handlers[i];
- if (this.$$handleEvent(event) === false) {
- returnValue = false;
- }
- }
- return returnValue;
- };
- }
- function fixEvent(event) {
- if (event) return event;
- event = window.event;
- event.pageX = event.clientX + D.getScrollLeft(event.srcElement);
- event.pageY = event.clientY + D.getScrollTop(event.srcElement);
- event.target = event.srcElement;
- event.stopPropagation = stopPropagation;
- event.preventDefault = preventDefault;
- var relatedTarget = {
- "mouseout": event.toElement, "mouseover": event.fromElement
- }[ event.type ];
- if ( relatedTarget ){ event.relatedTarget = relatedTarget;}
- return event;
- };
- function stopPropagation() { this.cancelBubble = true; };
- function preventDefault() { this.returnValue = false; };
- return {
- "addEvent": addEvent,
- "removeEvent": removeEvent,
- "fixEvent": fixEvent
- };
- })();
- /*CustomEvent*/
- CE = (function(){
- var guid = 1;
- return {
- addEvent: function( object, type, handler ){
- if (!handler.$$$guid) handler.$$$guid = guid++;
- if (!object.cusevents) object.cusevents = {};
- if (!object.cusevents[type]) object.cusevents[type] = {};
- object.cusevents[type][handler.$$$guid] = handler;
- },
- removeEvent: function( object, type, handler ){
- if (object.cusevents && object.cusevents[type]) {
- delete object.cusevents[type][handler.$$$guid];
- }
- },
- fireEvent: function( object, type ){
- if (!object.cusevents) return;
- var args = Array.prototype.slice.call(arguments, 2),
- handlers = object.cusevents[type];
- for (var i in handlers) {
- handlers[i].apply(object, args);
- }
- },
- clearEvent: function( object ){
- if (!object.cusevents) return;
- for (var type in object.cusevents) {
- var handlers = object.cusevents[type];
- for (var i in handlers) {
- handlers[i] = null;
- }
- object.cusevents[type] = null;
- }
- object.cusevents = null;
- }
- };
- })();
- /*String*/
- S = {
- camelize: function(s){
- return s.replace(/-([a-z])/ig, function(all, letter) { return letter.toUpperCase(); });
- }
- };
- /*System*/
- // remove css image flicker
- if (B.ie6) {
- try {
- document.execCommand("BackgroundImageCache", false, true);
- } catch(e) {}
- };
- /*define*/
- $$ = O; $$B = B; $$A = A; $$F = F; $$D = D; $$E = E; $$CE = CE; $$S = S;
- })();
CJL.0.1.js的更多相关文章
- 非常好的一个JS代码(CJL.0.1.js)
/*! * Cloudgamer JavaScript Library v0.1 * Copyright (c) 2009 cloudgamer * Blog: http://cloudgamer.c ...
- MyEclipse导入jquery-1.8.0.min.js等文件报错的解决方案
1.选中报错的jquery文件例如"jquery-1.8.0.min.js". 2.右键选择 MyEclipse-->Exclude From Validation . 3. ...
- jquery-2.0.3.js和jquery-2.0.3.min.js的区别
两个文件的作用是完全一样的. jquery-2.0.3.js里的代码是没有进行处理的原代码,适合于人们阅读与研究. jquery-2.0.3.min.js里的代码进行过特殊的处理, 如变量的名称基本都 ...
- MVC3.0+knockout.js+Ajax 实现简单的增删改查
MVC3.0+knockout.js+Ajax 实现简单的增删改查 自从到北京入职以来就再也没有接触MVC,很多都已经淡忘了,最近一直在看knockout.js 和webAPI,本来打算采用MVC+k ...
- vue init初始化项目后 npm run dev报错 10% building modules 1/1 modules 0 activeevents.js:182 throw er; // Unhandled 'error' event
报错信息: 10% building modules 1/1 modules 0 activeevents.js:182 throw er; // Unhandled 'error' ev ...
- EpiiAdmin 开源的php交互性管理后台框架, 让复杂的交互变得更简单!Phper快速搭建交互性平台的开发框架,基于Thinkphp5.1+Adminlte3.0+Require.js。
EpiiAdmin EpiiAdmin php开源交互性管理后台框架,基于Thinkphp5.1+Adminlte3.0+Require.js, 让复杂的交互变得更简单!Phper快速搭建交互性平台的 ...
- 2018.6.18 MyEclipse导入jquery-1.8.0.min.js等文件报错的解决方案
MyEclipse导入jQuery-1.8.0.min.js等文件的时候有时候会报了一堆missing semicolon的错误.怎么解决这个报错呢?方法如下: 1.选中报错的jquery文件例如&q ...
- Deno 1.0 & Node.js
Deno 1.0 & Node.js A secure runtime for JavaScript and TypeScript. https://deno.land/v1 https:// ...
- vue2.0 flexible.js + rem 进行自适应开发
1.在页面中引入flexible.js base.js /** * flexible.js 阿里前端自适应解决方案 */ ;(function(win, lib) { var doc = win.do ...
随机推荐
- BZOJ2301——莫比乌斯&&整除分块
题目 对于给出的n个询问,每次求有多少个数对(x,y),满足a≤x≤b,c≤y≤d,且gcd(x,y) = k,gcd(x,y)函数为x和y的最大公约数. 分析 莫比乌斯经典入门题. (我也刚学,就写 ...
- zhengrui集训D1-D5笔记
Day_1 计数 它咕掉了 Day_1 序列数据结构 它咕掉了 Day_2 线性代数 高斯消元\Large{高斯消元}高斯消元 普通版:略 模质数:求逆 模合数:exgcd 逆矩阵\Large{逆矩阵 ...
- JQuery实践--实用工具函数
实用工具函数,$命名空间的一系列函数,但不操作包装集.它要么操作除DOM元素以外的Javascript对象,要么执行一些非对象相关的操作. JQuery的浏览器检测标志可在任何就绪处理程序执行之前使用 ...
- P4568 [JLOI2011]飞行路线 分层图最短路
思路:裸的分层图最短路 提交:1次 题解: 如思路 代码: #include<cstdio> #include<iostream> #include<cstring> ...
- [shell]如何测试shell脚本,保证正确
如何用最快最有效的方式进行测试? 很多开发的习惯是,二话不说,写完/拿到,就跑一把,看看输入,输出,想要的操作是否完成,也就过了. 其实这是十分不严谨的,若是未经过QA,风险还是相当大的. 以下即sh ...
- Apache Kudu: Hadoop生态系统的新成员实现对快速数据的快速分析
A new addition to the open source Apache Hadoop ecosystem, Apache Kudu completes Hadoop's storage la ...
- 解决JAVA单步调试键盘输入被JDB占用的问题
解决JAVA单步调试键盘输入被JDB占用的问题 问题来源: 在完成本周任务时,编写的代码中含有Scanner类,编译及运行过程均正确,但使用JDB单步调试时,运行到输入行无法在JDB内部输入变量值. ...
- java课后实验性问题7
1.异常处理 import javax.swing.*; class AboutException { public static void main(String[] a) { int i = 1, ...
- Pro*C编程研究一:从.pc到.exe
[第一步]在Windows下编辑一个.pc程序(Pro*C源程序,作者用到:C:\proctest\exam1.pc),其内容如下: #include <stdio.h> #include ...
- Quickstart: Create and publish a package using Visual Studio (.NET Framework, Windows)
https://docs.microsoft.com/en-us/nuget/quickstart/create-and-publish-a-package-using-visual-studio-n ...