繁体   English   中英

IE替代console.log()

[英]IE alternative to console.log()

因此,环顾四周后,我发现console.log()可以炸毁IE9。 因此,我不能在代码中留下任何内容,既然如此,我该怎么办?

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

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

如果存在data_box,我可以用什么替代方式替换'console.log('')'来告诉三元函数什么也不做?

有使用任何合乎逻辑的理由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();

等等… :-)

最简单的方法是编写自己的console.log函数,并在浏览器不提供的情况下使用它。

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

…但是最好将调试例程从代码中剥离出来,然后再投入生产。

我会给您几行代码来使其正常工作,但是关注该博客在解决该问题方面做得很好。 读这个

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

至于我自己,我已经停止直接使用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();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM