3

ブラウザ提供の Javascriptオブジェクトに関するMozilla Developer Networkページには、次のように記載されています。このオブジェクトを上書きしながら、ブラウザのWeb コンソールと対話する方法はありますか?consoleNote: At least in Firefox, if a page defines a console object, that object overrides the one built into Firefox.

ユースケースは、Firebug や Google Chrome Inspect Element などのツールによってコンソールにログを記録するときに提供される行番号/ファイル情報を保持しながら、呼び出しをインターセプトconsole.log()して何か特別なことをしたり、ログ分類などの別のパラメーターを取得したりすることです。私が見つけた最も近い答えは次のとおりです: Intercepting web browser console messagesですが、カスタム コンソール オブジェクトを介して Web コンソールとやり取りしたり、カスタム定義のデバッグ サービスを使用したりすることはありません。

debug.log = function(string, logLevel) {
    checkLogLevel(logLevel); // return false if environment log setting is below logLevel 
    var changedString = manipulate(string); 
    console.log(changedString); 
}

は、関数呼び出しの行番号/ファイル ソースを保持しませんdebug.log()console.trace()オプションとして、トレース スタックを 1 レベル上に移動して何かを実行することもできますが、console.log()最初に拡張することに興味がありました。また、カスタム ブラウザー拡張機能や Firebug プラグインを作成するのではなく、Firebug などの既存の Web コンソール/ツールで動作するソリューションを見つけたいと思っていますが、このための既存のソリューションを誰かが知っている場合は、それらに興味があります。

明らかに次のようなもの:

    console = {
        log: function (string) {
            console.log('hey!');
        }
    }
    console.log('hey!');

は機能せず、無限再帰が発生します。

4

2 に答える 2

3

上書きする前に、(元の) コンソールへの参照を保存するだけです。

var originalConsole = window.console;
console = {
    log: function(message) {
        originalConsole.log(message);
        // do whatever custom thing you want
    }
}
于 2012-12-01T00:30:52.273 に答える