簡體   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