[英]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.