[解決済み] javascriptのconsole.logをキャプチャする?重複
2023-07-28 13:38:15
質問
重複の可能性があります。
Chromeのconsole.logの呼び出しを傍受する。
javascriptでコンソールオブジェクト(ログの再ルーティング用)を拡張することは可能ですか?
私のJSアプリが
console.log
に書き込むとき、私はそのログメッセージをキャプチャして、そのログ出力をサーバーにAJAXできるようにしたい。どのようにすればよいのでしょうか?
ログに書き込むコードは外部サービスからで、それが私が直接それをAJAXすることができない理由です。
どのように解決するのですか?
以下の方法で、JavaScriptの関数を乗っ取ることができます。
(function(){
var oldLog = console.log;
console.log = function (message) {
// DO MESSAGE HERE.
oldLog.apply(console, arguments);
};
})();
-
1行目
は関数をクロージャで囲み、他の関数が直接
oldLog
に直接アクセスできないようにします(保守性の理由から)。 - 2行目 は、オリジナルのメソッドをキャプチャします。
- 3行目 は新しい関数を作成します。
-
4行目
を送信するところです。
message
をサーバーに送るところです。 - 5行目 は、本来処理されるはずのオリジナルメソッドを呼び出しています。
apply
が使われているので、それを呼び出すことができます。
で
console
を元の引数を使って呼び出します。単に
oldLog(message)
を呼び出すと失敗します。
log
との関連付けに依存するためです。
console
.
更新
zzzzBovさんのコメントによると、IE9では
console.log
は実際には関数ではないので
oldLog.apply
は失敗します。 参照
IE9でconsole.log.applyが動作しない。
を参照してください。
関連
-
[解決済み] JavaScriptで "use strict "は何をするのか、その根拠は?
-
[解決済み] JavaScriptで文字列が部分文字列を含むかどうかを確認する方法は?
-
[解決済み] あるJavaScriptファイルを他のJavaScriptファイルにインクルードするにはどうすればよいですか?
-
[解決済み] JavaScriptでタイムスタンプを取得する方法は?
-
[解決済み] Node.jsを使うタイミングをどう判断するか?
-
[解決済み】JavaScriptの比較では、どちらの等号演算子(== vs ===)を使うべきですか?
-
[解決済み】JavaScriptで文字列の出現箇所をすべて置換する方法
-
[解決済み】オブジェクトからプロパティを削除する(JavaScript)
-
[解決済み] 配列からオブジェクトを生成する
-
[解決済み] javascriptでオプションのパラメータを扱う
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] console.logの適切なラッパーで、正しい行番号のもの?
-
[解決済み] 文字列のn番目の出現箇所を取得するには?
-
[解決済み] WebStormで未解決の変数が大量にある場合の警告に対処する方法は?
-
[解決済み] 文字列が空白であるかどうかをチェックする
-
[解決済み] 各オブジェクトに?重複
-
[解決済み] Node.jsのES6クラスをrequireで作る
-
[解決済み] JavaScript で css プロパティを使用して HTML 要素の背景色を設定する方法
-
[解決済み] JavaScriptのArray.sort()メソッドでシャッフルするのは正しいのか?
-
[解決済み] jQueryのバージョン1、バージョン2、バージョン3の違いは何ですか?[クローズド]
-
[解決済み] これは純関数ですか?