之前调试一直alert,这个玩意不仅效率不高,而且各自object跟本看不出来什么,后来发现console这个,我去自己太失败了,然后发现ie依然坑,所以自己写了
这个插件,结合jquery,主要是练习哈哈,看了jx的调试,更加nb,不过这个也够用的了,给各位看看,需要的拿去
/**
* jquery 输出 主要是给debug使用
* 兼容各种模式 ,建议google或者firefox ie太坑爹了
* @Author JueYue
*
*/
jQuery.log = {
/**
* 是不是调试模式
* @returns {boolean}
*/
isDebug: function () {
return true;
},
/**
* 在控制台输出 obj是输出对象,level是判断基本 包括info(默认),debug,warn,error
* @param obj
* @param info
*/
trace: function (obj, level) {
if (!this.isDebug()) {
return;
}
if (typeof level == 'undefined' || level == null) {
level = "info"
}
out.call(out, obj);
function out(obj) {
try {
/**
* ie浏览器输出的不是直接对象而是object所以需要jquery遍历输出
*/
if (/mise/.test(navigator.userAgent.toLowerCase())
|| /rv:11/.test(navigator.userAgent.toLowerCase())) {
window.console[level](jQuery.json.encode(obj));
} else {
window.console[level](obj);
}
} catch (e) {
window.console[level]("日志错误-----" + e.message);
}
}
function logEach(obj) {
$.each(obj, function () {
out.call(out, this);
});
}
}
};
/**
* 因为ie不支持object所以需要把object转成json,这里调用一个函数
* 网上找的一个方法,效果还不错
*/
jQuery.json = {
type: function (o) {
var _toS = Object.prototype.toString;
var _types = {
'undefined': 'undefined',
'number': 'number',
'boolean': 'boolean',
'string': 'string',
'[object Function]': 'function',
'[object RegExp]': 'regexp',
'[object Array]': 'array',
'[object Date]': 'date',
'[object Error]': 'error'
};
return _types[typeof o] || _types[_toS.call(o)] || (o ? 'object' : 'null');
},
$specialChars: { '\b': '\\b', '\t': '\\t', '\n': '\\n', '\f': '\\f', '\r': '\\r', '"': '\\"', '\\': '\\\\' },
$replaceChars: function (chr) {
return jQuery.json.$specialChars[chr] || '\\u00' + Math.floor(chr.charCodeAt() / 16).toString(16) + (chr.charCodeAt() % 16).toString(16);
},
encode: function (o) {
var s = [];
switch (jQuery.type(o)) {
case 'undefined':
return 'undefined';
break;
case 'null':
return 'null';
break;
case 'number':
case 'boolean':
case 'date':
case 'function':
return o.toString();
break;
case 'string':
return '"' + o.replace(/[\x00-\x1f\\"]/g, jQuery.json.$replaceChars) + '"';
break;
case 'array':
for (var i = 0, l = o.length; i < l; i++) {
s.push(jQuery.json.encode(o[i]));
}
return '[' + s.join(',') + ']';
break;
case 'error':
case 'object':
for (var p in o) {
s.push(p + ':' + jQuery.json.encode(o[p]));
}
return '{' + s.join(',') + '}';
break;
default:
return '';
break;
}
},
decode: function (s) {
if (jQuery.type(s) != 'string' || !s.length) return null;
return eval('(' + s + ')');
}
};