int main(){
return 0;
}
111111111111111111111111111
111111111111111111111111111
int main(){
return 0;
}
粗体测试
粗体
斜体测试
斜体测试
标题测试
链接测试
oschina
图片测试
EMOJI测试
:fa-glass:
无序列表测试
有序列表测试
1. 有序列表项一
2. 有序列表项二
3. 有序列表项三
代码测试
/**
* Created by ling on 2015/5/6.
*/
!function (global) {
if (!global)
return;
'use strict';
var doc,
logger = new Logger(),
mod = 'dev';
var LeeJS = function (options) {
this.fn = {};
this.summary = {
"author": "Lee",
"license": "NO",
"name": "LeeJS",
"version": "2.0.0",
"description": "LeeJS",
"readme": "README",
"repository": {
"type": "",
"url": ""
}
};
this.debug = false;//调试模式
this.pageDefine = 'data-define';
this.module = {};//控制中心,页面对象集合
this.base = {};//基类或工具类
this.global = {};//全局类
this.init(options);
};
LeeJS.prototype = {
constructor: LeeJS,
init: function (options) {
if (options) {
this.pageDefine = options.pageDefine ? options.pageDefine : this.pageDefine;
}
},
/**
* 功能:动态为page对象添加属性
*
* @param page{Object}
* @param vals{NodeList}
*/
initParams: function (page, vals) {
var val = null,
valAttr = '',
valValue = '',
length = vals.length;
for (var i = 0; i < length; ++i) {
val = vals[i];
if (val instanceof HTMLElement) {
valAttr = val.getAttribute('data-name');
valValue = val.getAttribute('data-value');
if (valAttr) {
page[valAttr] = valValue;
if (mod !== 'pro') {
logger.logAttribute(valAttr, valValue);
}
}
}
}
},
/**
* 功能:从控制中心取得基类或工具类
* @param name{String}
* @returns {Object}
*/
fetch: function (name) {
return this.base[name];
},
/**
* 功能:织入切面,主要用于测量用户function性能、调用、日志等信息
* 生产环境可去掉些功能以提高性能
*
* @param page{Object}
* @param log{boolean}
*/
handerFunction: function (page, log) {
if (mod === 'pro')
return;
var keys = Object.getOwnPropertyNames(page.constructor.prototype).concat(Object.getOwnPropertyNames(page)),
length = keys.length,
i = 0;
for (i; i < length; ++i) {
var funcName = keys[i], fn = page[funcName];
if (typeof fn === 'function' && funcName !== 'constructor') {
page[funcName] = fn.around(funcName);
if (log)
logger.logFunction(funcName);
}
}
},
/**
* 功能:提供能外部调用
* 兼容1.0版本提供的API
*/
loadImg: function () {
var imgs = global.document.querySelectorAll('img[data-delay]');
this.loadDelayImg(imgs);
},
/**
* 功能:将图象的懒加载属性写入src属性,进行图象加载
*
* @param imgs{NodeList}
*/
loadDelayImg: function (imgs) {
var length = imgs.length, i = 0;
for (i; i < length; ++i) {
var img = imgs[i], src;
if (img instanceof HTMLElement) {
img.setAttribute('load', 'unload');
src = img.getAttribute('data-delay');
img.addEventListener('load', function () {
this.setAttribute('load', 'loaded');
});
img.addEventListener('error', function () {
this.setAttribute('load', 'error');
});
if (src)
img.setAttribute('src', src);
}
}
},
/**
* 功能:检测img图象是否加载完成
*
* @param imgs{NodeList}
* @returns {boolean}
*/
delayImgLoaded: function (imgs) {
var length = imgs.length, i = 0;
for (; i < length; ++i) {
var img = imgs[i];
if (img instanceof HTMLElement) {
var load = img.getAttribute('load');
if (load === 'unload')
return false;
}
}
return true;
}
};
doc = global.document;
global.action = new LeeJS({
debug: true,
pageDefine: 'data-define'
});
/**
* 功能:定义普通页面对象
*
* @param name{String}
* @param target{Function}
*/
global.define = function (name, target) {
if (typeof name === 'string' && typeof target === 'object' && '' !== name) {
if (global.action.module[name] === undefined) {
global.action.module[name] = target;
}
}
};
/**
* 功能:定义普通基类或工具类
*
* @param name{String}
* @param target{Function}
*/
global.base = function (name, target) {
if (typeof name === 'string' && typeof target === 'object' && '' !== name) {
if (global.action.base[name] === undefined) {
global.action.base[name] = target;
global.action.handerFunction(global.action.base[name], false);
}
}
};
/**
* 功能:定义全局执行的类
* @param name{String}
* @param target{Function}
*/
global.global = function (name, target) {
if (typeof name === 'string' && typeof target === 'object' && '' !== name) {
if (global.action.global[name] === undefined) {
global.action.global[name] = target;
global.action.handerFunction(global.action.global[name], false);
}
}
};
/**
* 功能:阻止事件冒泡
*
* @param evt{Event}
* @returns {boolean}
*/
global.stopEvent = function (evt) {
evt = evt || window.event;
if (evt.preventDefault) {
evt.preventDefault();
evt.stopPropagation();
}
if (evt.returnValue)
evt.returnValue = false;
if (evt.cancelBubble)
evt.cancelBubble = true;
return false;
};
/**
* 初始化
* 过程:1.检测x-foo-deine定义、读取x-foo-val和img延迟集合。
* 2.如果页面定义了x-foo-deine元素,并且页面对象引用是合法存在控制中。将对象引用注入到全局page属性(window.page)。
* 3.将x-foo-val集合注入到页面对象引用,即当前window.page上。
* 4.调用当前页面引用(window.page)的ready和register方法。
* 5.加载页面所有延迟加载img。
* 5.检测页面所有延迟加载img集合是否加载完成,加载完成调用当前页面引用的imgReady方法。
*/
global.onload = function () {
var defineValue,
pageDefine = doc.querySelector('[data-define]') || doc.querySelector('x-foo-define'),
vals = doc.querySelectorAll('val') || doc.querySelectorAll('x-foo-val'),
gVals = doc.querySelectorAll('gval') || doc.querySelectorAll('x-global-val'),
delayImgs = doc.querySelectorAll('img[data-delay]');
if (mod !== 'pro')
logger.logMessage('Debug info:');
//先开始加载图片
if (delayImgs instanceof NodeList || delayImgs instanceof HTMLElement) {
global.action.loadDelayImg(delayImgs);
}
if (pageDefine instanceof HTMLElement) {
defineValue = pageDefine.getAttribute(global.action.pageDefine);
global.page = global.action.module[defineValue] ? global.action.module[defineValue] : null;
if (global.page) {
if (mod !== 'pro') {
logger.logMessage('[data-define = ' + defineValue + ']');
global.action.handerFunction(global.page, true);
}
//注入页面key-value
if (vals)
global.action.initParams(global.page, vals);
//图片加载后调用
if (typeof global.page['imgReady'] === 'function') {
//1.5s检测一次
var check = self.setInterval(function () {
if (global.action.delayImgLoaded(delayImgs)) {
global.clearInterval(check);
global.page['imgReady']();
}
}, 1500);
}
try {
if (typeof global.page['ready'] === 'function')
global.page['ready']();
if (typeof global.page['register'] === 'function')
global.page['register']();
} catch (e) {
console.log(e.message);
}
}
} else {
if (mod !== 'pro') {
logger.logMessage('Attribute \'data-define\' is undefined!');
}
var fetch = doc.querySelector('[data-fetch]'),
obj = '',
func = '',
args = [];
if (fetch instanceof HTMLElement) {
obj = fetch.getAttribute('data-fetch');
func = fetch.getAttribute('data-func');
args = fetch.getAttribute('data-args');
if (obj && fetch) {
var util = global.action.fetch(obj);
if (typeof util[func] === 'function') {
var arr = JSON.parse('[' + args + ']');
if (arr instanceof Array)
util[func].apply(util, arr);
else
util[func].apply(util, []);
}
}
}
}
if (global.action.global) {
var gs = Object.getOwnPropertyNames(global.action.global),
length = gs.length,
i = 0;
for (; i < length; ++i) {
var g = global.action.global[gs[i]];
if (g && g instanceof Object) {
//注入页面key-value
if (gVals)
global.action.initParams(g, gVals);
try {
if (typeof g['register'] === 'function')
g['register']();
} catch (e) {
console.log(e.message);
}
}
}
}
};
}(window);
引用测试
引用测试
粗体测试
粗体
斜体测试
斜体测试
标题测试
链接测试
oschina
图片测试
EMOJI测试
:fa-glass:
无序列表测试
有序列表测试
1. 有序列表项一
2. 有序列表项二
3. 有序列表项三
代码测试
/**
* Created by ling on 2015/5/6.
*/
!function (global) {
if (!global)
return;
'use strict';
var doc,
logger = new Logger(),
mod = 'dev';
var LeeJS = function (options) {
this.fn = {};
this.summary = {
"author": "Lee",
"license": "NO",
"name": "LeeJS",
"version": "2.0.0",
"description": "LeeJS",
"readme": "README",
"repository": {
"type": "",
"url": ""
}
};
this.debug = false;//调试模式
this.pageDefine = 'data-define';
this.module = {};//控制中心,页面对象集合
this.base = {};//基类或工具类
this.global = {};//全局类
this.init(options);
};
LeeJS.prototype = {
constructor: LeeJS,
init: function (options) {
if (options) {
this.pageDefine = options.pageDefine ? options.pageDefine : this.pageDefine;
}
},
/**
* 功能:动态为page对象添加属性
*
* @param page{Object}
* @param vals{NodeList}
*/
initParams: function (page, vals) {
var val = null,
valAttr = '',
valValue = '',
length = vals.length;
for (var i = 0; i < length; ++i) {
val = vals[i];
if (val instanceof HTMLElement) {
valAttr = val.getAttribute('data-name');
valValue = val.getAttribute('data-value');
if (valAttr) {
page[valAttr] = valValue;
if (mod !== 'pro') {
logger.logAttribute(valAttr, valValue);
}
}
}
}
},
/**
* 功能:从控制中心取得基类或工具类
* @param name{String}
* @returns {Object}
*/
fetch: function (name) {
return this.base[name];
},
/**
* 功能:织入切面,主要用于测量用户function性能、调用、日志等信息
* 生产环境可去掉些功能以提高性能
*
* @param page{Object}
* @param log{boolean}
*/
handerFunction: function (page, log) {
if (mod === 'pro')
return;
var keys = Object.getOwnPropertyNames(page.constructor.prototype).concat(Object.getOwnPropertyNames(page)),
length = keys.length,
i = 0;
for (i; i < length; ++i) {
var funcName = keys[i], fn = page[funcName];
if (typeof fn === 'function' && funcName !== 'constructor') {
page[funcName] = fn.around(funcName);
if (log)
logger.logFunction(funcName);
}
}
},
/**
* 功能:提供能外部调用
* 兼容1.0版本提供的API
*/
loadImg: function () {
var imgs = global.document.querySelectorAll('img[data-delay]');
this.loadDelayImg(imgs);
},
/**
* 功能:将图象的懒加载属性写入src属性,进行图象加载
*
* @param imgs{NodeList}
*/
loadDelayImg: function (imgs) {
var length = imgs.length, i = 0;
for (i; i < length; ++i) {
var img = imgs[i], src;
if (img instanceof HTMLElement) {
img.setAttribute('load', 'unload');
src = img.getAttribute('data-delay');
img.addEventListener('load', function () {
this.setAttribute('load', 'loaded');
});
img.addEventListener('error', function () {
this.setAttribute('load', 'error');
});
if (src)
img.setAttribute('src', src);
}
}
},
/**
* 功能:检测img图象是否加载完成
*
* @param imgs{NodeList}
* @returns {boolean}
*/
delayImgLoaded: function (imgs) {
var length = imgs.length, i = 0;
for (; i < length; ++i) {
var img = imgs[i];
if (img instanceof HTMLElement) {
var load = img.getAttribute('load');
if (load === 'unload')
return false;
}
}
return true;
}
};
doc = global.document;
global.action = new LeeJS({
debug: true,
pageDefine: 'data-define'
});
/**
* 功能:定义普通页面对象
*
* @param name{String}
* @param target{Function}
*/
global.define = function (name, target) {
if (typeof name === 'string' && typeof target === 'object' && '' !== name) {
if (global.action.module[name] === undefined) {
global.action.module[name] = target;
}
}
};
/**
* 功能:定义普通基类或工具类
*
* @param name{String}
* @param target{Function}
*/
global.base = function (name, target) {
if (typeof name === 'string' && typeof target === 'object' && '' !== name) {
if (global.action.base[name] === undefined) {
global.action.base[name] = target;
global.action.handerFunction(global.action.base[name], false);
}
}
};
/**
* 功能:定义全局执行的类
* @param name{String}
* @param target{Function}
*/
global.global = function (name, target) {
if (typeof name === 'string' && typeof target === 'object' && '' !== name) {
if (global.action.global[name] === undefined) {
global.action.global[name] = target;
global.action.handerFunction(global.action.global[name], false);
}
}
};
/**
* 功能:阻止事件冒泡
*
* @param evt{Event}
* @returns {boolean}
*/
global.stopEvent = function (evt) {
evt = evt || window.event;
if (evt.preventDefault) {
evt.preventDefault();
evt.stopPropagation();
}
if (evt.returnValue)
evt.returnValue = false;
if (evt.cancelBubble)
evt.cancelBubble = true;
return false;
};
/**
* 初始化
* 过程:1.检测x-foo-deine定义、读取x-foo-val和img延迟集合。
* 2.如果页面定义了x-foo-deine元素,并且页面对象引用是合法存在控制中。将对象引用注入到全局page属性(window.page)。
* 3.将x-foo-val集合注入到页面对象引用,即当前window.page上。
* 4.调用当前页面引用(window.page)的ready和register方法。
* 5.加载页面所有延迟加载img。
* 5.检测页面所有延迟加载img集合是否加载完成,加载完成调用当前页面引用的imgReady方法。
*/
global.onload = function () {
var defineValue,
pageDefine = doc.querySelector('[data-define]') || doc.querySelector('x-foo-define'),
vals = doc.querySelectorAll('val') || doc.querySelectorAll('x-foo-val'),
gVals = doc.querySelectorAll('gval') || doc.querySelectorAll('x-global-val'),
delayImgs = doc.querySelectorAll('img[data-delay]');
if (mod !== 'pro')
logger.logMessage('Debug info:');
//先开始加载图片
if (delayImgs instanceof NodeList || delayImgs instanceof HTMLElement) {
global.action.loadDelayImg(delayImgs);
}
if (pageDefine instanceof HTMLElement) {
defineValue = pageDefine.getAttribute(global.action.pageDefine);
global.page = global.action.module[defineValue] ? global.action.module[defineValue] : null;
if (global.page) {
if (mod !== 'pro') {
logger.logMessage('[data-define = ' + defineValue + ']');
global.action.handerFunction(global.page, true);
}
//注入页面key-value
if (vals)
global.action.initParams(global.page, vals);
//图片加载后调用
if (typeof global.page['imgReady'] === 'function') {
//1.5s检测一次
var check = self.setInterval(function () {
if (global.action.delayImgLoaded(delayImgs)) {
global.clearInterval(check);
global.page['imgReady']();
}
}, 1500);
}
try {
if (typeof global.page['ready'] === 'function')
global.page['ready']();
if (typeof global.page['register'] === 'function')
global.page['register']();
} catch (e) {
console.log(e.message);
}
}
} else {
if (mod !== 'pro') {
logger.logMessage('Attribute \'data-define\' is undefined!');
}
var fetch = doc.querySelector('[data-fetch]'),
obj = '',
func = '',
args = [];
if (fetch instanceof HTMLElement) {
obj = fetch.getAttribute('data-fetch');
func = fetch.getAttribute('data-func');
args = fetch.getAttribute('data-args');
if (obj && fetch) {
var util = global.action.fetch(obj);
if (typeof util[func] === 'function') {
var arr = JSON.parse('[' + args + ']');
if (arr instanceof Array)
util[func].apply(util, arr);
else
util[func].apply(util, []);
}
}
}
}
if (global.action.global) {
var gs = Object.getOwnPropertyNames(global.action.global),
length = gs.length,
i = 0;
for (; i < length; ++i) {
var g = global.action.global[gs[i]];
if (g && g instanceof Object) {
//注入页面key-value
if (gVals)
global.action.initParams(g, gVals);
try {
if (typeof g['register'] === 'function')
g['register']();
} catch (e) {
console.log(e.message);
}
}
}
}
};
}(window);
引用测试
引用测试