Javascript 萤火虫控制台

Javascript 萤火虫控制台,javascript,jquery,firefox,firebug,Javascript,Jquery,Firefox,Firebug,下面是我的代码块。由于我没有在IE中安装Firebug,每次尝试在IE中测试代码时,我都会收到一条错误消息console未定义。所以我决定开发这段代码,以便console.log只在firefox中工作,并避免IE中出现错误消息 function clog() { if(window.console && window.console.firebug) { var a =[]; for(var i=0;i<arguments.leng

下面是我的代码块。由于我没有在IE中安装Firebug,每次尝试在
IE
中测试代码时,我都会收到一条错误消息console未定义。所以我决定开发这段代码,以便
console.log
只在firefox中工作,并避免IE中出现错误消息

function clog() {
    if(window.console && window.console.firebug) {
        var a =[];
        for(var i=0;i<arguments.length;i++) {
            a.push(arguments[i]);
        }
        console.log(a.join(' , '));
    }
}
函数阻塞(){
if(window.console&&window.console.firebug){
var a=[];

对于(var i=0;i当您调用这样的选择器时,比如说
$('body')
您所做的是创建一个对象,一个jQuery对象…这样您的输出是正确的

如果要显示的内容不是
.toString()
,则应调用该属性,例如:

$('body').selector //body
$('body').length   //1
$('body').context  //document

如果您使用的是
console.log
,我发现在缺少时创建它(而不是在您想使用它时检查它)要容易得多,只需在任何日志代码之前运行此命令:

if (typeof console == "undefined") console = { log: function () { } };
然后,如果选中,则可以删除当前的

console.log(a);
而不是

console.log(a.join(' , '));
我应该这样做

Array.prototype.join
将所有数组入口连接成一个
字符串
。这意味着

var b = [{}, "test"];
b.toString()

将求值为“
”[object object],测试“
,而不管该对象中有什么
方法
成员
。调用
.toString()
会丢失该信息。我总是编写一个包装函数(以防止非“控制台”浏览器出现问题)


您可以检查“msg”对象,然后检查类型以确定它是否是“jQuery”对象,并提取数据。

更准确地说:它被称为JavaScript对象,而不是jQuery对象。;)@Marcel——两者都是……它实际上是一个jQuery对象的实例,就像数组是一个JavaScript对象,但具体来说它是一个数组:)为什么不
if(window.console)
工作正常吗?如果
控制台
不可用,它将计算为
false
。@Marcel-不在IE中…昨天出现了这个问题,不要问我为什么,即使在IE8中,这个问题仍然存在,但没有在9中测试。啊,jQuery扩展了默认对象?我不是jQuery专家,我只是认为它返回了
getElementById
对象。
function log(msg) {
    try {
      console.log(msg);
    } catch(e){}
}