IE替代console.log()

时间:2014-04-11 13:31:07

标签: javascript

所以看了一下之后,我发现console.log()可以炸毁IE9。 所以我不能在我的代码中留下任何东西,就是这样,我能在这做什么?

我的data_box显示用户输入的一些文字。但是,如果没有文字,我想调用showMsg(),它会创建一个带有一些文本的新框,“No Text Here”。

(data_box.length) ? console.log('') : showMsg();

如果data_box存在,我可以用什么替代方法替换'console.log('')'来告诉三元函数不执行任何操作?

4 个答案:

答案 0 :(得分:2)

为此目的使用console.log没有合理的理由。

如果您不需要else(在某些情况下比三元运算符更短),您可以避免三元运算。

if(!data_box.length){ showMsg()}

如果你想完全使用三元运算符,你可以这样做:

data_box.length? null : showMsg();

或者如果你想要一个绝对的函数(我没有看到任何正当理由......但这只是一个练习),你可以用这种方式声明一个函数doNothing

function doNothing() {}

(data_box.length)? doNothing() : showMsg();

或没有功能退化:

data_box.length? (function() {})() : showMsg();

或再次:

data_box.length || showMsg();

依旧......: - )

答案 1 :(得分:1)

最简单的方法是编写自己的console.log函数,如果浏览器没有提供,请使用它。

window.console = window.console || { log: function () { } };

...但在将代码转换为生产之前从代码中删除调试例程会更好。

答案 2 :(得分:0)

我已经为您提供了几行代码以使其正常工作,但是关注博客在解决该问题方面做得很好。请阅读本文

http://patik.com/blog/complete-cross-browser-console-log/

答案 3 :(得分:0)

至于我自己,我已经停止直接使用console.log()。它太多了!

我有自己的log()功能:

function log() {
    var arg = Array.prototype.slice.call(arguments);

    if (console && console.log) {
        console.log.apply(console, arg);
    } else {
        for (var i = 0; i < arg.length; i++) alert(arg[i]);
    }
}

然后你可以打电话给它:

log('test', {}, ['test', 'hello']);

在ie中,它会弹出3个警告:'test', [object Object], 'test,hello'


修改

“如果真的没有做什么”,你可以这样做:

(data_box.length) || showMsg();

但实际上,最好使用if

if(!data_box.length) showMsg();