如何在JS中确定IE7中是否存在函数/方法?

时间:2009-07-29 05:47:27

标签: javascript jquery internet-explorer-7

我写了一个快速而肮脏的记录器作为jQuery插件......

(function($){   
    $.log = function(debug) {       
        if (console.debug) {            
            console.debug(debug);           
        };      
    };
})(jQuery);

它在Firefox中运行良好,但在IE7中,我收到了错误......

  

console.debug为null或不是对象

如何在与IE7兼容的JavaScript中执行函数?

4 个答案:

答案 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
相关问题