我写了一个快速而肮脏的记录器作为jQuery插件......
(function($){
$.log = function(debug) {
if (console.debug) {
console.debug(debug);
};
};
})(jQuery);
它在Firefox中运行良好,但在IE7中,我收到了错误......
console.debug为null或不是对象
如何在与IE7兼容的JavaScript中执行函数?
答案 0 :(得分:4)
console.debug
特定于Firebug,可在Firefox下运行。
在检查window.console
之前,您需要检查console.log
是否可用!
这是您的代码重做而没有错误:
(function($){
$.log = function(debug) {
if (window.console && console.debug) {
console.debug(debug);
};
};
})(jQuery);
答案 1 :(得分:3)
检查是否已定义控制台,然后检查调试是否为函数:
if (typeof(console) != 'undefined' && typeof(console.debug) == 'function'){
//...
}
答案 2 :(得分:3)
$.log = window.console && console.debug ? function(debug) { console.debug(debug); } : function(){};
变化:
$.log = function( debug ) {
if ( window.console && console.debug ) {
console.debug( debug )
}
}
$.log = function( msg ) {
if ( window.console ) {
if ( console.debug ) console.debug ( msg )
else if ( console.log ) console.log ( msg )
}
}
$.log = function( msg ) {
if ( typeof console === 'object' && typeof console.debug === 'function' ) {
console.debug( msg )
}
}
$.log = 'console' in window && console.debug ? function(m){console.debug(m)}:function(){}
$.log = function() {
if ( 'console' in window ) {
console.debug ? function(m){console.debug(m)} : ( console.log ? function(m){console.log(m)} : function(){}
}
}
$.log = window.log = function(m){ if(window.console && console.debug) console.debug(m) }
答案 3 :(得分:0)
上面的答案都是正确的,但你的日志语句的副作用是从一个参数对象转换成一个数组,你的输出看起来像这样:( / p>
[“my”,“debug”,“statement”]
要解决此问题,您需要转发参数对象并保持原样:
$.log = function() { // note no arguments used
if ( window.console && console.debug ) {
console.debug.apply(console, arguments )
}
}
现在输出如下:
My debug statement