2

IE は、デバッグ ウィンドウが開いている場合にのみコンソールをオブジェクトとして扱うことを理解しています。デバッグ ウィンドウが開いていない場合、コンソールは未定義として扱われます。

これが、次のようなifチェックを追加することにした理由です。

        if(console)
            console.log('removing child');

私の理解では、consoleが定義されていない場合、 console.logはスキップされます。ただし、IE8 ではif(console)行が通過し、以前のようにconsole.logで未定義の例外が発生します。これは奇妙です。

これを回避する方法はありますか?3 つのブラウザーすべてで実行されるように、コード内でコンソールをどのようにコーディングしますか?

4

6 に答える 6

9

if 句に次を追加できます。

if (console && console.log) {
    console.log('removing child');
}

または、次のように console.log 関数の周りにログ ラッパーを記述します。

window.log = function () {
    if (this.console && this.console.log) {
        this.console.log(Array.prototype.slice.call(arguments));
    }
}

次のように使用します。

log("This method is bulletproof", window, arguments");

そして、これがこのためのjsfiddleです: http://jsfiddle.net/joquery/4Ugvg/

于 2013-06-14T08:54:59.690 に答える
4

console.log空の関数に設定できます

if(typeof console === "undefined") {
    console = {
        log : function () {}
    }
}

この方法では、一度だけ気にする必要があります.l

于 2013-06-14T08:56:45.743 に答える
1

コンソールが存在するかどうかを確認するだけです

window.console && console.log('foo');
于 2013-06-14T09:00:24.743 に答える
0

代わりにこのような条件を使用してみてください。コンソールがサポートされていない場合、undefined not false がスローされます。

if(typeof console !== "undefined") {
console.log('removing child');
}

ただし、すべてのコンソール ログ ステートメントをラップする必要がないように、このスニペットをコードに挿入します。これにより、IE がエラーをスローしなくなります。

if(typeof console === "undefined") {
    console = {
        log: function() { },
        debug: function() { },
        ...
    };
}
于 2013-06-14T08:54:33.253 に答える
0

コンソールのタイプと、console.log のタイプを確認する必要があります。次のリンクを確認してください。

IE8 の console.log はどうなりましたか?

于 2013-06-14T08:54:52.477 に答える
0

同じことに関する詳細情報を確認してください: http://patik.com/blog/complete-cross-browser-console-log/

于 2013-06-14T09:05:26.460 に答える